我真的很难选择在我的ModelState.IsValid
,TryUpdateModel
和Create
操作方法(HTTP-POST)中使用Edit
或Delete
是否有特殊情况我们必须使用ModelState.IsValid
而不是TryUpdateModel
,反之亦然?
答案 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();
}
这是一样的。