我在专业 ASP.NET MVC 1.0 书第 1 章的“处理编辑错误”(第 67 页)中遇到了问题。
问题是当我编辑晚餐并单击保存时,即使我将标题留空,它也没有捕获任何表单错误。UpdateModel(dinner) 或 DinnerRepository.Save() 都不会引发错误。
当我在保存后检查数据库时,标题字段确实是空的。在不抛出错误的情况下怎么会发生这种情况?
任何帮助,将不胜感激。编辑以下代码:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formValues)
{
Dinner dinner = dinnerRepository.GetDinner(id);
try
{
UpdateModel(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinner.DinnerID });
}
catch
{
foreach (var issue in dinner.GetRuleViolations())
{
ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
}
return View(dinner);
}
}
发现了问题——事实上,这是我的一个 N00B 错误。由于某些奇怪的原因,我将以下代码注释掉了:
partial void OnValidate(ChangeAction action)
{
if (!IsValid)
throw new ApplicationException("Rule violations prevent saving");
}
难怪它没有发现错误......感谢RememberMe 的帮助!我很感激。