如何在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();
}
确保您的视图中的"警报"仅在您打算(从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视图即可。
这很简单,但应该给你一个概念。