【问题标题】:Redirecting to a specific action on browser back button click MVC重定向到浏览器后退按钮上的特定操作单击 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 似乎都不起作用。请帮忙。谢谢:)

【问题讨论】:

  • 只是想让您知道这是一种非常糟糕的做法,因为它既不是标准行为,也不是用户所期望的。你应该有非常有力的论据来这样做。我什至不知道是否可以更改历史记录或后退按钮的行为。
  • 我很清楚,谢谢。只是当用户点击我的链接时需要采取一些行动。但如果他们不这样做,然后点击后退按钮......大问题

标签: javascript asp.net-mvc back-button page-refresh


【解决方案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”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2012-01-01
  • 2012-10-14
相关资源
最近更新 更多