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

时间:2012-03-10 12:34:54

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

我创建了一个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 个答案:

答案 0 :(得分:13)

确保视图中的“提醒”仅在您打算显示时(从您的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写出脚本。希望这有帮助!

答案 1 :(得分:5)

控制器中的

使用此代码

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

在视图中使用此代码

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

答案 2 :(得分:5)

@Reynolds

你的答案很完美。

在Razor中,可以替换以下行

alert("@TempData[alertMessage]");

通过以下

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

PS。注意引号

答案 3 :(得分:3)

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

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

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

答案 4 :(得分:1)

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

Alert("Hello There!");

您无法直接从控制器中调用此方法。只需将上面的代码放入您的ThankYou视图中即可。

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