2012-07-11 248 views
1

我有一个在Visual Studio 2010中创建的ASP.NET项目。所以开始项目时,我得到了通用的“MY ASP.NET APPLICATION”页面。我已经删除了所有这些通用内容,并且正在根据用户的需求构建应用程序。Asp.Net在浏览器上点击后退按钮时强制Page_Load

在我的default.aspx页面上,我有一个datagrid包裹在UpdatePanel中。当用户从datagrid中选择一行时,我将导航到新页面。一切工作正常,但如果用户点击浏览器中的后退按钮,它就好像是从旧缓存版本加载页面,因为它再次显示通用“MY 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

也许这在你的文档的开始会有帮助吗? http://stackoverflow.com/a/11341116/109749 – jcolebrand 2012-07-11 20:42:42

回答

1

今天早上想通了。原来,这只是使用Ajax时的另一个问题。当用户在数据网格中选择一行时,我没有在重定向到新页面之前添加历史点。所以我只需要在scriptmanager上做一个AddHistoryPoint,然后再进行重定向,所有的都在附近。

0

有我想两件事情从...开始。

首先,在浏览器中,我会转到Internet选项>浏览历史记录设置。如果“检查存储页面的较新版本”设置为“从不”,我会将其移至“自动”。第二,我会看看实际的文件系统(不在Visual Studio中,使用文件资源管理器),看看该文件是否确实还在那里。如果是这样,我会删除它。

+0

我试图改变我的设置在Internet选项,并没有奏效。此外,该文件在文件系统中也不存在。 – 2012-07-11 21:20:09

相关问题