如何在MVC控制器中使用消息框?

10

我创建了一个MVC应用程序。用户必须注册,完成后,我会将他重定向到“感谢”页面。但是我想只显示一个弹出窗口来显示此消息。我该如何实现?

我的代码:

[HttpPost]
public ActionResult Enquiry(Enquiry enquiry)
{
    if (ModelState.IsValid)
    {
        dbEntities.Enquiries.AddObject(enquiry);
        dbEntities.SaveChanges();
        enquiry.SendEnquiryEmail(enquiry);

        return RedirectToAction("Thankyou"); 
    }

    return View(enquiry);
}

//redirect to thankyou page
public ActionResult Thankyou()
{
    return View();
}
5个回答

15
为了确保你的视图中的“alert”只在你打算时显示(从ThankYou方法重定向),而不是当别人意外导航到你的“ThankYou”视图时。
//redirect to thankyou page
public ActionResult Thankyou()
{
    TempData["alertMessage"] = "Whatever you want to alert the user with";
    return View();
}

那么在你的“感谢您”视图中,使用以下代码:

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

这将像普通JavaScript一样编写脚本。希望这可以帮到你!


6

@Reynolds

你的回答很完美。

在 Razor 中,以下行可以被替换:

alert("@TempData[alertMessage]");

通过以下方式:
alert('@TempData["alertMessage"]');

注意引号的使用。


2
答案很简单。它对我不起作用,所以我知道这是由于引号的原因。一旦我修复了引号,它就可以工作了。 - Dhruv Rangunwala
1
我们是开发人员,最重要的是,逻辑是正确的,所以答案对我来说似乎是真实的。我只是进行了更正,以确保正在学习MVC的人不会被卡住。我不明白你想证明什么。如果你想让我说你是天才,那就这样吧。谢谢你,天才,指出了错误。 - Dhruv Rangunwala

5
在控制器中使用以下代码:
public ActionResult Edit(CoverLetterModel model)
{
    TempData["msg"] = "<script>alert('Change succesfully');</script>";
}

在视图中使用此代码

@Html.Raw(TempData["msg"])

在您的视图页面上添加脚本的简单方法 - vicky

3
似乎您想在用户输入注册数据的视图上显示“感谢”消息框?如果是这样,您需要通过AJAX POST到一个操作,然后在客户端JavaScript中处理从该操作返回的成功/失败消息。如果您这样做,有一点需要记住,就是您不希望用户多次点击“提交”按钮,因此您可能需要在第一次单击后隐藏或禁用它,并在验证错误时显示/启用它...

1
在网页上,您需要使用JavaScript来显示消息框。 语法(在其最简单的形式下进入视图)
Alert("Hello There!");

你不能直接从控制器调用它。只需将上述代码放入你的ThankYou视图中即可。

这很简单,但应该能让你理解概念。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接