1

我有一个在 Visual Studio 2010 中创建的 ASP.NET 项目。所以要开始这个项目,我得到了通用的“MY ASP.NET APPLICATION”页面。此后,我删除了所有通用内容,并根据用户的需求构建了应用程序。

在我的 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"/>
4

2 回答 2

1

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

于 2012-07-12T13:34:13.917 回答
0

我会从两件事开始。

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

其次,我会查看实际的文件系统(不在 Visual Studio 中,使用文件资源管理器)以查看该文件是否确实仍然存在。如果是这样,我会删除它。

于 2012-07-11T21:11:12.843 回答