通俗易懂地讲,UpdateModel()
和TryUpdateModel()
是做什么的?我在Stack Overflow或者其他网站上都找不到简单易懂的解释,只看到人们讨论使用它们遇到的问题。
即使在VisualStudio的智能提示下也无济于事。我之所以提问是因为,比如说,在我的控制器中有这样一段代码:
[HttpPost]
public ActionResult Index( UserViewModel vm, FormCollection form)
{
var statesCheckBoxes = form["StatesList"];
vm.BA.StatesTraveledTo = statesCheckBoxes.Split(',').ToList<string>();
return View(vm);
}
我已经通过设置vm.BA.StatesTraveledTo
更新了我的模型,那我为什么还需要运行UpdateModel呢?另外,当我实际尝试执行以下操作时:[HttpPost]
public ActionResult Index( UserViewModel vm, FormCollection form)
{
var statesCheckBoxes = form["StatesList"];
vm.BA.StatesTraveledTo = statesCheckBoxes.Split(',').ToList<string>();
UpdateModel(vm); // IS THIS REDUNDANT TO THE PREVIOUS LINE?
return View(vm);
}
当我检查ModelState的值(在运行UpdateModel()之后)时,似乎什么都没有发生。我没有看到任何指示有任何更改的东西。我在ModelState字典中没有看到新键。
真的很困惑。谢谢!
编辑:
发布ViewModel和Model类的源代码:
public class UserViewModel
{
public BankAccount BA { get; set; }
}
public class BankAccount
{
public Person User { get; set; }
public List<string> StatesTraveledTo { get; set; }
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}