状况:
在.net中使用ShowModalDialog打开一个aspx页面(目标页面),并且在该目标页面中会有Postback到服务器端的动作,
结果每次该目标页面(模式窗体)提交到后台都会打开一个新的窗体,与要实现的效果相悖。
曾采用的方式:
这之间也曾采用过其他变通方式,就是新建一个htm页面,利用frameset将目标页面装在到该htm页面中,
每次Postback都只在框架内刷新,就不会有新页面弹出。
可是,在昨天做上传组件的过程中又碰到了一个棘手的问题,我在一个aspx页面(源页面)利用ShowModalDialog方式打开该htm页面,
并且要传递参数到该htm所包含的aspx页面(目标页面)中,这个时候Request将被htm截获,而不能传递到目标页面中,从而导致无法在目标页面中
处理post过来的URL参数。
最终的解决方法:
不用htm页面包装aspx页面(目标页面),而是直接在该aspx页面的head标签中添加以下代码
<base target=”_self”>
问题解决。
分析下来,原来页面默认的提交目标为_black,即打开新页面,将页面的请求目标属性显示设置为_self,即可避免在模式窗体中Postback打开新页面的问题。