Professional 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に感謝します!それは有り難いです。