在浏览器上单击后退按钮时Asp.Net强制Page_Load

时间:2012-07-11 20:37:29

标签: c# asp.net internet-explorer caching response

我有一个我在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"/>

2 个答案:

答案 0 :(得分:1)

今天早上想到这个。事实证明,这只是使用Ajax时的另一个问题。当用户在数据网格中选择一行时,我没有在重定向到新页面之前添加历史记录点。所以我只需要在进行重定向之前在AddHistoryPoint上执行scriptmanager,并且一切都在附近。

答案 1 :(得分:0)

我要从两件事开始。

首先,在浏览器中,我将转到Internet选项&gt;浏览历史记录设置。如果“检查存储页面的较新版本”设置为“从不”,那么我会将其移至“自动”。

其次,我会查看实际的文件系统(不在visual studio中,使用文件浏览器)来查看该文件是否确实存在。如果是这样,我会删除它。