8

我正在使用 TempData 传递其他消息以显示跨请求的通知:

    public ActionResult Address()
            TempData["NotificationType"] = "error";
            TempData["NotificationMessage"] = "There was an error updating the address.";
            return RedirectToAction("Index", "Home");
    }

    public ActionResult Index()
    {          

        if (TempData["NotificationType"] != null && TempData["NotificationMessage"] != null)
        {
            model.NotificationMessage = TempData["NotificationMessage"].ToString();
            model.NotificationType = TempData["NotificationType"].ToString();
        }
     return View();
    }

索引视图:

<div id="NotificationType" data-notification_type="@Model.NotificationType"/>
<div id="NotificationMessage" data-notification_message="@Model.NotificationMessage" />

<script type=text/javascript>
if($('#NotificationType').data('notification_type') == 'error'){
    Notify('error', "Error!", $('#NotificationMessage').data('notification_message'));
    }
</script>

然后我在视图中显示错误通知,效果很好。如果我单击另一个链接然后按浏览器中的后退按钮,通知会再次显示,我的问题就出现了。

有没有办法阻止通知重新显示?

编辑:看起来是因为它缓存了索引视图,因为当我点击后退按钮时它没有在操作中遇到断点。

4

2 回答 2

15

通过防止在索引视图上缓存来解决此问题:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult Index()
于 2012-12-19T09:44:16.673 回答
0

对于 .net core 3.0 或更高版本,您可以在索引视图中使用它

[ResponseCache(Duration = 30, NoStore = true)]
public ActionResult Index()
{
  //Your code here..
}

快乐编码。

于 2021-09-01T11:06:37.720 回答