在Professional ASP.NET MVC 1.0的NerdDinner示例中,有一種方法可以創建一個新的晚餐,如下所示(免費的NerdDinner版本的第89頁)。在那里它檢查ModelState.IsValid為true。它似乎檢查模型是否對數據庫有效(即,它捕獲數據類型轉換,例如具有無效格式但不是業務規則的日期)。真的嗎?提交表單時,如果日期中有錯誤,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); }
什么是在NerdDinner中的ASP.NET MVC中有效的ModelState.IsValid?
慕工程0101907
2019-09-02 09:09:27