我需要在ASP.NET MVC应用程序中显示确认数据库更新成功的消息.目前,应用程序仅在发生错误时显示消息(使用ValidationSummary助手).在成功操作时,应用程序当前重定向到导航中的合适点.
目标是:
我的偏好是提交按钮附近的某种工具提示类型的消息显示,然后是一个删除消息并在成功后继续现有重定向的机制.
这似乎表明Ajax调用而不是现有的HTTP POST来提交表单.我该怎么做?
Sim*_*tes 54
我会用的 TempData["key"]
这就像ViewData["key"]下一个HttpRequest的数据仍然存在,并在此之后由asp.net自动处理
所以你可以做到这一点.
控制器动作
[HttpPost]
public ActionResult SomePostAction(SomeViewModel vm)
{
if(ModelState.IsValid) // Is User Input Valid?
{
try
{
CommitData();
TempData["UserMessage"] = new MessageVM() { CssClassName = "alert-sucess", Title = "Success!", Message = "Operation Done." };
return RedirectToAction("Success");
}
catch(Exception e)
{
TempData["UserMessage"] = new MessageVM() { CssClassName = "alert-error", Title = "Error!", Message = "Operation Failed." };
return RedirectToAction("Error");
}
}
return View(vm); // Return View Model with model state errors
}
Run Code Online (Sandbox Code Playgroud)
_Layout.cshtml
<!DOCTYPE html>
<html>
<head>
</head>
<body>
@if(TempData["UserMessage"] != null)
{
var message = (MessageVM)TempData["UserMessage"];
<div class="alert @message.CssClassName">
<strong>@message.Title</strong>
@message.Message
</div>
}
@RenderBody()
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
更多信息:http://www.devcurry.com/2012/05/what-is-aspnet-mvc-tempdata.html
小智 15
在成功的操作中,您只需将成功消息描述存储到ViewBag中,如同
ViewBag.successMessage="Success"
Run Code Online (Sandbox Code Playgroud)
然后在视图中检查ViewBag值是否为空?通过javascript,如果不为null,则显示Div中的消息
if('@ViewBag.successMessage'!="")
{
$('#divSuccessMessage').show();
}
else
{
$('#divSuccessMessage').hide();
}
Run Code Online (Sandbox Code Playgroud)
页面加载中的默认值隐藏div