我有一个网络应用程序,用户可以在其中填写或修改表单并保存,然后在需要时再返回以修改表单。保存表单后,所有值都存储在数据库中,当用户再次访问时,将使用这些值填充表单。
似乎每次用户返回保存后的表单时,表单将在保存之前显示其旧状态,直到用户刷新页面。除非用户具有检查存储页面的较新版本设置为每次访问网页的Internet Explorer设置,否则每次都会发生这种情况。
问题只发生在Internet Explorer中,任何其他浏览器都没有问题。我尝试过设置HTTP标头以防止缓存而没有运气。
我尝试将元标记<meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Expires" content="-1">
添加到页面头部,我也尝试过:
Response.Expires = -1;
Response.AddHeader("Pragma", "no-cache");
Response.CacheControl = "No-cache";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
在控制器中。
以下是回复标题:
HTTP / 1.1 200 OK
服务器:ASP.NET Development Server / 10.0.0.0
日期:2013年8月26日星期一20:10:33 GMT
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0
Pragma:no-cache
缓存控制:无缓存,无存储
Pragma:no-cache
到期:-1
内容类型:text / html;字符集= UTF-8
内容长度:66131
连接:关闭
有没有办法我每次用户登陆该页面时都可以强制IE检查存储页面的新版本?如果没有,MVC3中是否有针对此问题的解决方法?
提前致谢!
答案 0 :(得分:3)
我们的工作是在URL中传递时间戳,以便页面每次都有唯一的地址,并且不会从缓存中显示。然后在控制器中忽略时间戳参数。
答案 1 :(得分:0)
您未能设置正确的标头以防止缓存。你究竟尝试了什么,以及有问题的标题是什么(看看Fiddler)。
在this article中,我解释了IE的“检查新版本”功能是如何工作的,正如我所说:
要记住的最重要的事实是这四个选项 在没有缓存标头时影响行为 HTTP响应;当缓存标头存在时,Internet Explorer 永远尊重他们。