我的 jQuery 代码在某些情况下隐藏了一个 ddl。在这种情况下,在提交表单后,使用 UpdateModel 似乎并不能始终如一地工作。我在控制器中的代码:
// POST: /IllnessDetail/Edit
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(IllnessDetail ill)
{
IllnessDetailFormViewModel mfv = new IllnessDetailFormViewModel(ill);
if (ModelState.IsValid)
{
try
{
IllnessDetail sick = idr.GetLatestIllnessDetailByUsername(User.Identity.Name);
UpdateModel(sick);
idr.Save();
return RedirectToAction("Current", "IllnessDetail");
}
catch
{
ModelState.AddRuleViolations(mfv.IllnessDetail.GetRuleViolations());
}
}
return View(new IllnessDetailFormViewModel(ill));
}
我刚刚开始使用 MVC,并且在截止日期前工作,所以对于 UpdateModel 的工作原理仍然很模糊。调试似乎表明正确的值被传递给了 action 方法:
public ActionResult Edit(IllnessDetail ill)
并将正确的值放入以下行中的病态:
IllnessDetailFormViewModel mfv = new IllnessDetailFormViewModel(ill);
然而,当一切都说完并返回给客户端时,显示的是以下值:
sick.IdInfectiousAgent
而不是以下值:
ill.IdInfectiousAgent
我能想到的唯一原因是 ddlInfectiousAgent 已被 jQuery 隐藏。还是我叫错了灯柱?
安德鲁