当验证失败时,ASP.NET MVC如何在表单中重新填充值?

时间:2013-06-15 11:22:44

标签: asp.net asp.net-mvc asp.net-mvc-3 web-applications

在Web表单中使用视图状态。但是在ASP.NET MVC中,由于模型绑定可用,因此可以在控制器中轻松地访问属性。但是,当模型验证失败时,ASP.NET MVC是否会自动填充表单控件,以实现验证失败?

或者还有其他方法可以实现这一目标。

1 个答案:

答案 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