ModalDialog 页面内要求同时提供上传文件和下载文件功能。
在head 内部添加<base id ="base" target ="_self" />, 在Form 标签内添加一个隐藏的iframe<iframe id="targetFrame" name="download" runat ="server" height="0px" width="0px"></iframe>
写一个JavaScript Function 如下:
Function ChangeBaseTarget(obj)
{
If(obj.value==”Upload”)
document.getElementById('base').target = "_self";
else
document.getElementById ('base').target = " targetFrame ";
}
将Upload 和Download 按扭的OnClientClick 设为此脚本。即可实现上传下载功能。如果改变base 标签的target ,在下载时不会有任何响应,虽然执行了下载代码。这是一种方法在ModalDialog 页面内实现上传下载文件功能。
另一种方法是通过过渡页面。假设有三个页面ParentPage.aspx,FramePage.aspx,DialogPage.aspx
ParentPage.aspx 页面就放一个Html 按扭 ,该按扭的JavaScript Function 如下:
function Button1_onclick() {
var par = encodeURIComponent(" 测 a 试 º? 中 D 文 ? 参 ? 数 ºy&&^!?=$^&*()" );
var doc = "dialogHeight=400px;dialogWidth=650px;status=no;help=no;scroll=no;location=no" ;
showModalDialog("FramePage.aspx?par1=1&par2=2&par3=" +par,null ,doc);
}
FramePage.aspx 页面:
在Form 内放一个隐藏的Iframe ,
< iframe id ="ifame" name ="down" frameborder ="0" runat ="server" width ="100% " height ="100%" > </ iframe >
写一个JavaScript Function 接受ParentPage.aspx 传过来的参数,并接参数传递给DialogPage.aspx 页面,同时将 iframe 的src 设为DialogPage.aspx
function OpenDialogPage() {
var frame = document.getElementById('ifame' );
var pars = location.search;
if (pars.indexOf("?" ) != -1) {
var pars = pars.substr(1);
}
frame.src = "DialogPage.aspx?” + pars;
//alert(pars);
}
Body 的onload 事件执行此方法:
< body onload =" OpenDialogPage ();" >
</ body >
DialogPage.aspx 页面按照普通页面窗体接受参数、页面部局及执行相关操作即可。在接受参数时,请用 decodeURIComponent 解码,以获取正确参数。
关于LinkButton 在ModalDialog 页面内的使用,linkbutton 与普通的button 有所不同,在ModalDialog 页面中,即使即base 的target 设为iframe 或_self 均无效,在使用linkbutton 前必须使ModalDialog 页面先回发一次服务器,再次操作才正常执行程序,所以会出现在单击一次普通按扭后再点击linkbutton ,此时,linkbutton 工作正常。否则会提示,脚本“运行时错误,缺少对象。”, 即便设置了posturl 也如此。但是如果是用过渡页面来呈现modaldialog ,那么一切问题将不复存在!!!