首页 > 解决方案 > ASP NET MVC 5:有什么方法可以避免/拦截返回浏览器按钮?

问题描述

在 ASP.NET MVC 5 应用程序中来回切换浏览器按钮的问题是否存在真正的解决方案?

用例:

A页:在表格中显示一些数据和2个按钮“删除,确认”。第一个删除数据,第二个转到页面B页面B:显示一些基于上一个的其他数据,以及一个“继续下一步”按钮。

页面操作在 GET 中。按钮在 POST 中(带有表单)

用户单击“删除”,数据被删除,然后返回浏览器按钮,Asp net mvc 再次显示页面 A。您仍会在表格中看到数据,单击“删除”会导致错误。您也可以点击前进进入页面B,即使真实数据被删除,该页面仍会显示数据。

目前发生的情况(最新的 Chrome、Edge,没有尝试其他浏览器):似乎浏览器会自动缓存这些页面。来回点击检索仍然在其中的数据的缓存版本(全部缓存)。控制器上没有调用任何操作,您可以随心所欲地来回走动,并且不会对控制器进行一次调用。所以你对它没有任何真正的控制权。

测试完成: 后退按钮不会导致回发到 MVC 中的控制器操作

什么也没做。仍然检索缓存的页面。

我们如何控制所有浏览器的网页缓存?

和上面一样。

https://forums.asp.net/t/1957310.aspx?Capture+Browser+Back+Button+and+execute+controller+action+

和上面一样。

如何仅从我的登录页面禁用我的 mvc 中的浏览器后退按钮?

不禁用后退按钮。

以此类推与以前的链接的各种口味。我什至尝试将它们混合在一起,将所有标题和 NoCache 以及此类属性和 javascript 放在一起。

没有什么。

找到的解决方案:将控件放在按钮上,它调用一个ajax post并且每次都被迫进行真正的调用。

是否存在解决方案?

标签: c#asp.netasp.net-mvcbrowser-cache

解决方案


尝试覆盖本机 Web 浏览器功能是个坏主意。您将在多种浏览器行为及其进一步更新中挣扎。最好的解决方案是通过 ex 重新加载页面条目上的数据。使用 javascript 的 ajax 调用。


推荐阅读