重定向到浏览器后退按钮上的特定操作单击 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 将用户重定向到页面

后退按钮重定向脚本

为啥在c#,mvc中退出并按下浏览器后退按钮时会转到一个页面

使用 JavaScript 按下浏览器后退按钮时重定向到 URL