我需要显示一条消息,以确认ASP.NET MVC应用程序中的数据库更新成功。当前,应用程序仅在发生错误时显示消息(使用ValidationSummary帮助器)。成功完成操作后,应用程序当前将重定向到导航中的适当点。
目标是:
我的偏好是在“提交”按钮附近显示某种工具提示类型的消息,然后是一种用于删除消息并在成功后继续进行现有重定向的机制。
这似乎建议使用Ajax调用而不是现有的HTTP POST来提交表单。我将如何处理?
我会用 TempData["key"]
TempData["key"]
这就像ViewData["key"]但是数据保留用于下一个HttpRequest并在此之后由asp.net自动处理
ViewData["key"]
因此,您可以执行此操作。
控制器动作
[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 }
_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>