在Web表单中使用视图状态。但是在ASP.NET MVC中,由于模型绑定可用,因此可以在控制器中轻松地访问属性。但是,当模型验证失败时,ASP.NET MVC是否会自动填充表单控件,以实现验证失败?
或者还有其他方法可以实现这一目标。
答案 0 :(得分:9)
有一个名为ModelState
的属性(在Controller
类中),它包含所有值。它用于模型绑定。验证失败时,ModelState
会保留所有带有验证错误的值。
ModelState.IsValid
告诉您,验证没有引发任何错误。
ModelState.Values
包含所有值和错误。
编辑
Ufuk的例子:
查看型号:
public class EmployeeVM
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
操作:
[HttpGet]
public ActionResult CreateEmployee()
{
return View();
}
[HttpPost]
public ActionResult CreateEmployee(EmployeeVM model)
{
model.FirstName = "AAAAAA";
model.LastName = "BBBBBB";
return View(model);
}
查看:
@model MvcApplication1.Models.EmployeeVM
@using (Html.BeginForm("CreateEmployee", "Home")) {
@Html.EditorFor(m => m)
<input type="submit" value="Save"/>
}
正如您所看到的,在POST方法中,值被AAAAA和BBBBB覆盖,但在POST后,表单仍然显示已发布的值。它们取自ModelState
。