首页 > 解决方案 > 在 RedirectionToAction 之前显示警告消息

问题描述

我有一个 MVC 应用程序,用户可以发送查询。如果没有错误,则提交查询后,应用程序会将用户重定向到正确的页面。我试图在新页面打开之前显示一条消息。这是控制器代码:

if(Session["login"] == null)
{
 string retsnd = clgnrhlp.SendEnquiry(name, email, message);
 ViewBag.MSGSENT = retsnd;
 return RedirectToAction("Index", "Login");
}
else
{
 string retsnd = clgnrhlp.SendEnquiry(name, email, message);
 ViewBag.MSGSENT = retsnd;
 return RedirectToAction("Index", "Trades");
}

在我的视图(Contact.cshtml)中,我尝试了这个:

<script language='javascript' type='text/javascript'>
  var dataexists = @ViewBag.MSGSENT;
  if (dataexists)
    Response.Write(@ViewBag.MSGSEN)
</script>

但什么也没发生,它直接转到另一页。请问有什么线索吗?

谢谢。

标签: redirectmodel-view-controller

解决方案


我找到了问题中描述的问题的解决方案。我决定使用 TempData 而不是 ViewBag。所以 TempData 包含我想在消息中显示的值。通过代码,如果用户登录或未登录,我会将用户重定向到不同的页面,但消息将是相同的。因此,在将重定向用户的两个视图中,我放置了以下代码:

@if (TempData["sent"] != null)
 {
   <script type="text/javascript">
      alert("@(TempData["sent"])");
   </script>
 }

它工作正常。

不过,如果你们中的任何人有更好的方法来做到这一点,我愿意接受建议。谢谢


推荐阅读