用外行的话来说,做UpdateModel()
什么,以及TryUpdateModel()
?我似乎无法(在 SO 或网络上)找到任何关于它实际作用的明确解释(用明确的术语),只是人们在使用它时遇到问题。
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; }
}