日期:2014-05-18  浏览次数:20409 次

关于如何在ASP.NET 2.0下禁用页面缓存的问题……能搜索到的方法我都用过了,还是不行……
我的问题是,在Page_Load里定义了从数据库里加载数据(没有设置IsPostBack),在提交页面后,页面上应该显示根据提交后产生的新数据。但是页面上还是显示上次页面载入的数据,只有刷新后才显示新数据。

在调试下查看Page_Load里读取的数据是新的,但是页面上显示的却是旧的数据。

据朋友说这个是页面缓存的问题造成,但是我搜索很多可能的解决方法,但是都不起作用。

如MSDN上说的在OutputCache里设置Location为none就能禁用缓存了或是Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();   ,
但是设置后还是不行……


我这下是真的没办法了……所以在此向大家求助……

------解决方案--------------------
你用缓存了啊,如果没有用更新完后直接导向到刚才的页面不行么
------解决方案--------------------
页面回发后,你是不是没有把相应的值绑定到页面上。。只有这种可能
------解决方案--------------------
Head中添加:

<META http-equiv=Pragma content=no-cache>
<META http-equiv=Cache-Control content=no-cache>
<META http-equiv=Expires content=0>
------解决方案--------------------
<head runat= "server ">
<meta http-equiv= "pragma " content= "no-cache " />
------解决方案--------------------
if(!IsPostBack)
------解决方案--------------------
if(!IsPostBack)
多半是这个原因啦
------解决方案--------------------
对头
------解决方案--------------------
看看自己觉得最不可能出错的地方,也许有惊喜!
------解决方案--------------------
操作完成重新获取绑定数据
------解决方案--------------------
但是设置后还是不行……
————————————————————————————————————————
你先搞清楚是服务器端缓存了还是客户浏览器端缓存了!
------解决方案--------------------
验证服务器端是否缓存很容易,一旦输出的是缓存内容,就根本不会执行page_load。

验证客户端缓存也很容易,把你的ie的设置(例如“浏览历史”的设置)看看,比较专业的人可以使用telenet向web服务器发送一个get命令就可以得到网页源码。
------解决方案--------------------
请将你的page_load代码及页面显示代码贴出来大家看看。