Я прошел половину пути между использованием UpdateModel и использованием FormCollection следующим образом:
// POST: /IllnessDetail/Edit
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(IllnessDetail ill)
{
IllnessDetailFormViewModel mfv = new IllnessDetailFormViewModel(ill);
try
{
ill.username = User.Identity.Name;
IllnessDetail sick = idr.GetLatestIllnessDetailByUsername(User.Identity.Name);
sick.IdInfectiousAgent = ill.IdInfectiousAgent;
sick.IdEncephalitisSubType = ill.IdEncephalitisSubType;
sick.IdEncephalitisType = ill.IdEncephalitisType;
UpdateModel(sick);
idr.Save();
return RedirectToAction("Current", "IllnessDetail");
}
catch
{
ModelState.AddRuleViolations(mfv.IllnessDetail.GetRuleViolations());
}
return View(new IllnessDetailFormViewModel(ill));
}
В частности, я вручную обновил свойства данных модели, которые относятся к каскадным ddls, которые отображаются или скрываются в соответствии с пользовательским вводом в первом:
sick.IdInfectiousAgent = ill.IdInfectiousAgent;
sick.IdEncephalitisSubType = ill.IdEncephalitisSubType;
sick.IdEncephalitisType = ill.IdEncephalitisType;
Я знаю, что это полная выдумка, но я понятия не имею, почему это необходимо. Как видите, я использую связыватель модели в вызове метода:
// POST: / IllnessDetail / Edit
[AcceptVerbs (HttpVerbs.Post)]
public ActionResult Edit (IllnessDetail ill
Но даже если больной объект заполнен правильными данными, более поздний вызов UpdateModel (sick) не работает.
Кто-нибудь знает, почему это происходит?
Кстати, я уже говорил выше, что болел в прошлом году. Нет, не энцефалит. У меня был эндокардит, инфекция внутри сердца, обычно на сердечных клапанах. Гадкая работа, но все хорошо, что хорошо кончается. Даже если это закончится кардиохирургией ...