【问题标题】:How to use message box in MVC controller?如何在 MVC 控制器中使用消息框?
【发布时间】:2012-03-27 15:15:33
【问题描述】:

我创建了一个 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();
}

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 razor model-view-controller


    【解决方案1】:

    为了确保您视图中的“警报”仅在您打算时显示(来自您的ThankYou 方法的重定向),而不是在有人意外导航到您的“ThankYou”视图时显示

    //redirect to thankyou page
    public ActionResult Thankyou()
    {
        TempData["alertMessage"] = "Whatever you want to alert the user with";
        return View();
    }
    

    然后在你的“ThankYou”视图中,这个:

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

    这将像通常编写任何 JavaScript 一样写出脚本。希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      @雷诺兹

      你的答案很完美。

      在 Razor 中,可以替换以下行

      alert("@TempData[alertMessage]");
      

      通过以下

      alert('@TempData["alertMessage"]');
      

      PS。注意引号

      【讨论】:

      • 答案很简单。它对我不起作用,所以我知道这是由于引用。一旦我修正了引号,它就起作用了。
      • 我们是开发人员,最重要的是,逻辑有效,所以答案对我来说似乎是真实的。我只是更正它以确保正在学习 MVC 的人不会被卡住。我不明白你想证明什么。如果你想让我说你是天才,那就这样吧。感谢天才指出错误。
      【解决方案3】:

      在控制器中使用此代码

      public ActionResult Edit(CoverLetterModel model)
      {
          TempData["msg"] = "<script>alert('Change succesfully');</script>";
      }
      

      在视图中使用此代码

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

      【讨论】:

      • 在视图页面上添加脚本的简单方法
      【解决方案4】:

      听起来您可能希望在用户输入注册数据的视图上显示“谢谢”消息框?

      如果是这种情况,您需要对操作进行 AJAX POST,然后在客户端 JavaScript 中处理从操作返回的成功/失败消息。

      如果您这样做,请记住一件事,您不希望您的用户多次单击“提交”按钮,因此您可能希望在第一次单击后隐藏或禁用它并在验证错误...

      【讨论】:

        【解决方案5】:

        在网络上,您需要使用 Javascript 来显示消息框。语法(进入你的视图是最简单的形式)

        Alert("Hello There!");
        

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

        这很简单,但应该给你概念。

        【讨论】: