Chrome后退按钮页面刷新-ASP.net

Chrome后退按钮页面刷新-ASP.net,asp.net,caching,refresh,google-chrome,outputcache,Asp.net,Caching,Refresh,Google Chrome,Outputcache,我有一个ASP.net应用程序(c#) 当用户位于特定页面上时,他们会单击此页面上的链接,将其带到子页面,显示产品详细信息 如果用户单击浏览器后退按钮,我需要将父页面刷新到其初始状态。ie所有输入数据的文本框都需要为空,任何隐藏字段都需要重置等。基本上,当用户单击“上一步”时,我需要CTRL-F5 禁用后退按钮不是一个选项 我只在某些页面上需要这个 在IE和Firefox中,我可以毫无问题地实现这一点。但是使用chrome浏览器,文本框和隐藏字段仍然包含它们的值。如果我在Chrome中按CTRL

我有一个ASP.net应用程序(c#)

当用户位于特定页面上时,他们会单击此页面上的链接,将其带到子页面,显示产品详细信息

如果用户单击浏览器后退按钮,我需要将父页面刷新到其初始状态。ie所有输入数据的文本框都需要为空,任何隐藏字段都需要重置等。基本上,当用户单击“上一步”时,我需要CTRL-F5

禁用后退按钮不是一个选项

我只在某些页面上需要这个

在IE和Firefox中,我可以毫无问题地实现这一点。但是使用chrome浏览器,文本框和隐藏字段仍然包含它们的值。如果我在Chrome中按CTRL-F5,页面将正确重置为初始状态

这是我尝试过的代码

<%@ OutputCache Location="None" VaryByParam="None" %>
这是:

   Response.Buffer = true;
   Response.Cache.SetCacheability(HttpCacheability.NoCache);
   Response.Cache.SetAllowResponseInBrowserHistory(false);
   Response.Cache.SetNoStore();
    Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
    Response.Cache.SetValidUntilExpires(false);
    Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetNoStore();
我也尝试了各种不同的组合,但没有成功


多亏了

“暴力”解决方案是在页面上放置一些javascript,在页面加载时将数据设置为某种已知状态。因此,它会根据数据数组或json对象查找所有元素并设置数据。在最初的请求中,由于所有内容都是默认的,所以设置没有任何区别。在返回按钮请求中,由于javascript仍然必须运行,因此它会重置所有值,而不管浏览器是什么


我不相信你能强迫浏览器按照你描述的方式运行,因为这取决于每个浏览器如何实现后退按钮——chrome只是做得不同而已

当按下浏览器的后退按钮时,浏览器不会自动重置输入字段。相反,浏览器保留用户的输入,用户可以更轻松地返回并更改输入

您无法解决此服务器端问题,因为浏览器会为此绕过缓存。相反,您可以在输入字段上使用
autocomplete=“off”
HTML属性来防止浏览器保留这些字段

您还可以使用JavaScript手动重置表单:

document.getElementById("form1").reset();

这两条线为我解决了Chrome问题:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
我使用此可选行告诉浏览器不要为同一页面的每个请求创建历史记录条目:

Response.Cache.SetAllowResponseInBrowserHistory(true);
来源:


您也可以在表单标签上设置autocomplete=“off”,而不是每个输入字段。

谢谢。这并不能解释为什么Ie和Firefox看起来令人耳目一新,而不是Chrome。我想这是谷歌人的设计选择。我仍然很高兴他们支持他
autocomplete
属性作为一种解决方法。这是Chrome开发者讨厌的“特性”。我花了很长时间才弄清楚我的动态表单发生了什么(用户可以添加新行,这些新行在提交时保存到数据库中)。在“back”上,Chrome不会填写先前添加行的db ID(即使我的应用程序以HTML格式输出),因此我的应用程序认为所有行都是新的,并在进一步提交时复制它们
autocomplete=“off”
会起作用。您使用了哪些Chrome浏览器?戴夫?贝塔?马厩?窗户?