页面刷新或者子窗体刷新父窗体,不提示 "重试或取消”对话框

情景:如果页面有form表单,并且执行过post请求,< form method="post" ...>, 页面刷新或者子窗体刷新父窗体,会弹出一个 "重试或取消”的对话框。

方案:

 一、 window.opener.location.reload() ;或者parent.location.reload();  如果改页面没提交过,这个方法好使.但是这个页面一旦提交过后,系统就会提示"重试或取消”的对话框.

二、window.opener.location = window.opener.location;或者 parent.window.location.href = parent.window.location.href;  这个方法肯定不提示,但是有个问题就是分页显示的时候,一刷新总是会显示第一页,同时查询的条件也不能保存下来。

三、针对方法二,我们可以在提交事件里面用 Response.Redirect(Request.Url.AbsolutePath+"?search="...);方式到跳转当前页面,在Page_Load方法中,均采用类似下列方式设置值,间接转为为get请求。此方法基本上可以解决问题。但是如果有些页面使用了,第三方插件,里面部分参数自己无法控制,就比较纠结了。当然此方案或许可以,但是需要花一些时间,去判断第三方插件使用post方法的参数列表,加到现在的参数列表中。另外最纠结的是get方法的参数的列表长度有限制。

            string searchRequest = Request.QueryString["search"];
            if (!string.IsNullOrWhiteSpace(searchRequest))
            {
                txtSearch.Text = searchRequest.Trim();
            }
            string pageIndexRequest = Request.QueryString["pageIndex"];
            if (!string.IsNullOrWhiteSpace(pageIndexRequest))
            {
                ....
            }

 

四、 window.opener.form1.submit();或者parent.window.form1.submit();  这个方法也不提示了,这个方法就是自动提交页面,绕开那个烦人提示的界面,但是如果被刷新的页面用到了类似gridwiew之类数据绑定控件,里面的数据可能不会随着刷新而发生变化,原因就是gridwiew的数据绑定是在某个控件的事件中进行,而页面是通过submit()提交的,不会触发该控件的事件gridwiew中的数据也是通过读取viewstat中内容获得的,所以在刷新过程中数据不会发生变化.

五、window.opener.__doPostBack(" Control","");或者parent.window.__doPostBack(" Control",""); 其中 Control 是控件ID,这个方法就是克服了三的缺点,不用.opener.form1.submit()这样直接提交.不仅让页面自动提交,而且还要想办法让控件的事件也执行.但是此方法也不是完美的,有的页面是没有这样的控件,有的页面有这个控件但也不能触发数据绑定事件.比如页面数据是随下框内容发生变化的那种页面.因为页面数据是否重新绑定取决于下拉框中内容是否发生变化.而打开子窗体前后时下拉框内容肯定没有变化,所以页面内容也不会变化.

六、针对方法四、方法五、我们可以在父页面的Page_Load中绑定数据时不加IsPostBack判断,但是不好就不好在点按钮时同样的数据会绑定两遍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值