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

Posted

技术标签:

【中文标题】如何在 MVC 控制器中使用消息框?【英文标题】:How to use message box in MVC controller? 【发布时间】: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();

【问题讨论】:

【参考方案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 视图即可。

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

【讨论】:

以上是关于如何在 MVC 控制器中使用消息框?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net MVC:如何自定义验证消息显示

Java 弹出的消息框关不掉

用户输入值时如何从文本框中填充消息框?

如何在 AvaloniaUI(测试版)中显示消息框

如何在 dllmain 中调用消息框

向父对象表单弹出框发送消息