重定向到浏览器后退按钮上的特定操作单击 MVC
Posted
技术标签:
【中文标题】重定向到浏览器后退按钮上的特定操作单击 MVC【英文标题】:Redirecting to a specific action on browser back button click MVC 【发布时间】:2014-02-19 10:57:17 【问题描述】:单击浏览器的后退按钮时,如何重定向到控制器操作。 我可以通过点击我自己的按钮或页面上的链接来实现这一点,但点击浏览器的返回或刷新按钮获得相同的结果是一个问题。
我有一个名为“通知”的控制器 控制器中名为“Unlock”的操作将“id”作为参数。
我的链接运行良好:
@html.ActionLink("Back to List", "Unlock", new id = Model.NotificationId )
我尝试过使用 javascript:
<script>
window.onbeforeunload = function ()
window.location.replace("/Notifications/Unlock/" + "@Model.NotificationId");
</script>
甚至 window.location.href 似乎都不起作用。请帮忙。谢谢:)
【问题讨论】:
只是想让您知道这是一种非常糟糕的做法,因为它既不是标准行为,也不是用户所期望的。你应该有非常有力的论据来这样做。我什至不知道是否可以更改历史记录或后退按钮的行为。 我很清楚,谢谢。只是当用户点击我的链接时需要采取一些行动。但如果他们不这样做,然后点击后退按钮......大问题 【参考方案1】:你不能这样做。当用户按下浏览器的后退按钮时,会渲染上一个页面的缓存版本,并且永远不会调用服务器。
【讨论】:
谢谢。有没有比我正在尝试的更好的方法?因为禁用后退按钮是绝对不行的。尽管我是一名开发人员,但我一直是其他可怕网站的用户,这些网站实现了......笑话 我认为我们需要更多关于您要解决的实际问题的背景信息。然后可以考虑其他方法。也许 AJAX 调用一个动作或类似的东西。 非常感谢@timmkrause。这给了我一个想法。【参考方案2】:这对我有用:
<script>
window.onunload = function ()
$.ajax(
url: '/Notifications/Unlock/' + '@Model.NotificationId',
type: 'POST',
datatype: "json",
contentType: "application/json; charset=utf-8"
);
;
</script>
【讨论】:
如果被重定向到的操作方法是 'HttpPost' 类型,这会起作用吗? 我使用的是“HttpPost”类型,因此我在 ajax 调用中提到了“POST”以上是关于重定向到浏览器后退按钮上的特定操作单击 MVC的主要内容,如果未能解决你的问题,请参考以下文章
如果我单击设备后退按钮,它应该重定向到上一页,但它直接转到应用程序的主页
当用户在 JSF 中注销后单击后退按钮时重定向到登录页面 [重复]
在 ASP.net MVC 5 应用程序中单击按钮时使用 JavaScript/jQuery 将用户重定向到页面