С точки зрения непрофессионала, что делает UpdateModel ()
, а также TryUpdateModel ()
? Кажется, я не могу найти (в SO или в Интернете) четкого объяснения того, что он на самом деле делает (в ясных терминах), просто у людей возникают проблемы с его использованием.
Intellisense 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; }
}