In layman's terms, what does UpdateModel()
do, as well as TryUpdateModel()
? I can't seem to find (on SO or the web) any clear explanation of what it actually does (in clear terms), just people having problems using it.
VisualStudio's intellisense is not helping me either. The reason why I ask is because, let's say, if I have this in my controller:
[HttpPost]
public ActionResult Index( UserViewModel vm, FormCollection form)
{
var statesCheckBoxes = form["StatesList"];
vm.BA.StatesTraveledTo = statesCheckBoxes.Split(',').ToList<string>();
return View(vm);
}
Aren't I already updating my model by setting vm.BA.StatesTraveledTo
? Why do I need to run UpdateModel? Also, when I actually try to do the following:
[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);
}
Nothing seems to happen in that when I inspect the value of the ModelState (after I run UpdateModel() ), I don't see anything indicating that anything has changed. I don't see a new key in the ModelState dictionary.
Really confused. Thanks!
Edit:
Posting the source code for the ViewModel and Model classes:
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; }
}