是否有特殊情况我们必须使用ModelState.IsValid而不是TryUpdateModel,反之亦然?

时间:2011-02-17 05:19:33

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

我真的很难选择在我的ModelState.IsValidTryUpdateModelCreate操作方法(HTTP-POST)中使用EditDelete

是否有特殊情况我们必须使用ModelState.IsValid而不是TryUpdateModel,反之亦然?

1 个答案:

答案 0 :(得分:3)

TryUpdateModel函数返回ModelState.IsValid。那是一个。使用TryUpdateModel,您可以使用表单中提供的值更新现有对象。但是当你创建一个新方法时,你有两种方法:

[HttpPost]
public function Create(Model model)
{
      //ModelState is already populated, binding of form values to Model is done.
}

[HttpPost]
public function Create()
{
    //ModelState is not populated yet
    var model = new Model();
    TryUpdateModel(model);
    //ModelState is populated here, after Model values population.
}

更新现有模型时,它可能如下所示:

[HttpPost]
public function Update(int id)
{
    var model = Repository.Get(id);
    TryUpdateModel(model);
    if (ModelState.IsValid) 
        Repository.Save();
}

[HttpPost]
public function Update(int id)
{
    var model = Repository.Get(id);
    if (TryUpdateModel(model))
        Repository.Save();
}

这是一样的。