我有一个我在Visual Studio 2010中创建的ASP.NET项目。所以为了开始这个项目,我得到了通用的“我的ASP.NET应用程序”页面。我已经删除了所有通用内容,并根据用户的需求构建应用程序。
在我的default.aspx页面上,datagrid
包含了UpdatePanel
。当用户从datagrid
中选择一行时,我会导航到新页面。一切都运行正常,但如果用户要单击浏览器中的后退按钮,它就好像是从旧的缓存版本加载页面,因为它再次显示通用的“我的ASP.NET应用程序”页面。
我已经对此进行了一段时间的研究,一切都说如果你告诉Response
不要使用缓存,那么如果用户单击后退按钮,它会强制Page_Load
命中。但是,这样做对我来说不起作用。如果我单击刷新按钮,或键入F5,则表示我的页面已成功重新加载。我正在使用IE9,这是我在主页的Page_Load
中尝试的内容:
Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Expires = -1441;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
Response.AppendHeader("pragma", "no-cache");
Response.CacheControl = "No-cache";
Response.AddHeader("cache-control", "no-store, no-cache, must-revalidate");
另外,我尝试在母版页的脚本中插入它:
<meta http-equiv="Expires" content="0"/>
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="Pragma" content="no-cache"/>
答案 0 :(得分:1)
今天早上想到这个。事实证明,这只是使用Ajax时的另一个问题。当用户在数据网格中选择一行时,我没有在重定向到新页面之前添加历史记录点。所以我只需要在进行重定向之前在AddHistoryPoint
上执行scriptmanager
,并且一切都在附近。
答案 1 :(得分:0)
我要从两件事开始。
首先,在浏览器中,我将转到Internet选项&gt;浏览历史记录设置。如果“检查存储页面的较新版本”设置为“从不”,那么我会将其移至“自动”。
其次,我会查看实际的文件系统(不在visual studio中,使用文件浏览器)来查看该文件是否确实存在。如果是这样,我会删除它。