Chrome返回按钮页面刷新 - ASP.net

Set*_*ker 9 asp.net caching outputcache google-chrome refresh

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

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

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

禁用后退按钮不是一种选择.

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

在IE和Firefox中,我可以毫无问题地使用它.但是使用chrome,文本框仍然包含其隐藏字段的值.如果我在Chrome中点击CTRL-F5,则页面会正确重置为其初始状态.

这是我试过的代码.

<%@ OutputCache Location="None" VaryByParam="None" %>
Run Code Online (Sandbox Code Playgroud)

还有这个:

   Response.Buffer = true;
   Response.Cache.SetCacheability(HttpCacheability.NoCache);
   Response.Cache.SetAllowResponseInBrowserHistory(false);
   Response.Cache.SetNoStore();
Run Code Online (Sandbox Code Playgroud)

还有这个:

    Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
    Response.Cache.SetValidUntilExpires(false);
    Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetNoStore();
Run Code Online (Sandbox Code Playgroud)

我也尝试过各种不同的组合,但没有成功.

谢谢

Pru*_*der 6

按下浏览器的后退按钮时,浏览器不会自动重置INPUT字段.相反,浏览器保留用户的输入,使用户更容易返回并对输入进行更改.

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

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

document.getElementById("form1").reset();
Run Code Online (Sandbox Code Playgroud)


Tej*_*ejs 0

“强力”解决方案是在页面上放置一些 JavaScript,在页面加载时将数据设置为某种已知状态。因此它会找到所有元素并根据数据数组或 json 对象设置数据。在最初的请求中,由于一切都是默认的,因此该设置不会产生任何影响。在后退按钮请求中,由于仍然需要运行 javascript,因此无论浏览器如何,它都会重置所有值。

我不相信你可以强迫浏览器按照你描述的方式运行,因为这取决于每个浏览器他们想要如何实现后退按钮 - chrome 只是做得不同。