一次意外发现第二次打开模式窗口时,不能进入if(!Page.Postback),
当时情景是这样的:点击Gatagrid的一行后的update按钮,通过url传两个参数到模式窗口,然后模式窗口在Page_Load 里取参数,读取数据库,初始化页面(在if(!Page.Postback)里)。在模式窗口中修改内容,提交。回到父页面,发现Datagrid的内容已经更新,然后再点update按钮,进入模式窗口,发现模式窗口中显示的内容还是更新之前的内容,查询数据库,数据库记录也已经更新。调试,发现两次url一样(参数一样),第二次打开模式窗口时,if(!Page.Postback)不能进去,恍然大悟,然来是缓存在作怪(因为两次url一样,所以浏览器直接从缓存取)。
解决方案:
1.在Page_Load的if(Page.Postback)上面清除缓存。
增加如下代码:
Response.Cache.SetNoServerCaching();
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(new DateTime(1900,01,01,00,00,00,00));
2.每次点击update按钮时,使每次产生的url不一样。
用于Datagrid每行的key一样,可定每次传的参数一样,也就是url一样,可不可以增加一个参数,每次传一个随机数呢?当然可以。修改后url如下:
Date date = new Date();
string url = "WebForm2.aspx?key1="+ par1 +"&key2="+ par2 +"&flag=" + date;
3.修改浏览器配置。步骤如下:
Tools->Internet Options ->General
在Template Internet files部分选择Setting,在Check for newer versions of stored pages 处选第一个就可以了(默认是Automatically).点击确定就搞定了,当然这是治标不治本的方法,只是告诉大家这样可以临时解决。

浙公网安备 33010602011771号