我有一个ASP.NET MVC 4应用程序。我是ASP.NET MVC 4的新手。目前,我正在尝试构建一个基本的任务列表应用程序。
public ActionResult Create()
{
var model = new TaskModel();
return View("~/Views/Task.cshtml", model);
}
[HttpPost]
public ActionResult Create(TaskModel model)
{
if (model.TaskName.Length == 0)
{
// Display error message
}
else
{
// Save to database
// Write success message
}
return View("~/Views/Task.cshtml", model);
}
如果出现错误,我会在屏幕上显示错误消息。我的问题是,视图中先前输入的值未显示。整个视图都是空白的。在这种情况下如何保留视图中的值?
谢谢!
答案 0 :(得分:3)
我使用TempData。
public ActionResult Create()
{
var model = new TaskModel();
TempData["task"] = model;
return View("~/Views/Task.cshtml", model);
}
[HttpPost]
public ActionResult Create()
{
var task = (TaskModel)TempData["task"];
UpdateModel(task);
if (model.TaskName.Length == 0)
{
// Display error message
}
else
{
// Save to database
// Write success message
}
TempData["task"] = task;
return View("~/Views/Task.cshtml", model);
}
MVC的工作方式与WebForms不同,因为没有“控件”的概念,你必须自己保留状态。如果您不想使用TempData,另一个选项是使用LosFormatter将控件序列化为隐藏的HTML字段。这将复制ASP.NET WebForms中的ViewState功能