【发布时间】:2010-02-19 21:38:27
【问题描述】:
我在专业 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 的帮助!我很感激。
【问题讨论】:
-
更新:我刚刚发现,如果我只将标题留空,则不会发现错误。但是,如果除了标题之外,我将 EventDate 留空,那么两者都会被捕获并显示正确的错误消息。这是我的 ID10T 错误,还是其他原因?