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

本文关键字:消息 控制器 MVC | 更新日期: 2023-09-27 18:27:24

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

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

确保您的视图中的"警报"仅在您打算(从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一样编写脚本。希望这能有所帮助!

@Reynolds

你的答案很完美。

在Razor中,以下行可以替换

alert("@TempData[alertMessage]");

通过以下

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

PS。注意的引号

在控制器中使用此代码

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

在视图中使用此代码

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

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

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

如果你这样做,需要记住的一件事是,你不希望你的用户多次点击"提交"按钮,所以你可能想在第一次点击后隐藏或禁用它,并在验证错误时显示/启用它。。。

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

Alert("Hello There!");

您不能直接从控制器调用此操作。只需将以上代码放入您的ThankYou视图即可。

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