論Professional ASP.NET MVC 1.0的NerdDinner例如有創建一個新的晚餐,複製波紋管(自由的NerdDinner版第89頁)的方法。什麼是ModelState.IsValid在NerdDinner中的ASP.NET MVC中有效?
有它檢查ModelState.IsValid真正的。它似乎檢查模型是否對數據庫有效(也就是說,它捕獲數據類型轉換,如具有無效格式的日期,但不包括業務規則)。真的嗎?
提交表單時,如果日期中有錯誤,ModelState.IsValid將爲false,並且您將返回一個錯誤,但僅針對日期,因爲AddRuleViolations從未執行過。如果您完全刪除了對ModelState.IsValid的檢查,那麼您將得到所有錯誤(由於例外),包括在其無效日期的標記。那麼,爲什麼在那裏檢查ModelState.IsValid呢?我錯過了什麼嗎?
//
// POST: /Dinners/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Dinner dinner) {
if (ModelState.IsValid) {
try {
dinner.HostedBy = "SomeUser";
dinnerRepository.Add(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new {id = dinner.DinnerID });
} catch {
ModelState.AddRuleViolations(dinner.GetRuleViolations());
}
}
return View(dinner);
}
布拉德有什麼辦法找出如果裝飾有DataAnnotations模型「的IsValid 「沒有ModelState。 (比方說的對象是從一個文件中加載或在控制檯應用程序等中使用) – 2011-05-10 03:53:44
否,ModelState.IsValid是知道是否有任何的驗證(或數據轉換)結合模型期間的錯誤的唯一途徑。 – 2011-05-16 04:51:38