亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是在NerdDinner中的ASP.NET MVC中有效的ModelState.IsValid?

什么是在NerdDinner中的ASP.NET MVC中有效的ModelState.IsValid?

慕工程0101907 2019-09-02 09:09:27
在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); } 
查看完整描述

3 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

ModelState.IsValid告訴您是否添加了任何模型錯誤ModelState

默認模型綁定器將為基本類型轉換問題添加一些錯誤(例如,為非“數字”傳遞非數字)。您可以根據您使用的任何驗證系統更完整地填充ModelState。

樣本DataAnnotations模型綁定器將填充模型狀態,并從DataAnnotations模型中的屬性獲取驗證錯誤。


查看完整回答
反對 回復 2019-09-02
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

是的,Jared和Kelly Orr是對的。我在編輯異常中使用以下代碼。


foreach (var issue in dinner.GetRuleViolations())

{

    ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);

}

代替


ModelState.AddRuleViolations(dinner.GetRuleViolations());


查看完整回答
反對 回復 2019-09-02
  • 3 回答
  • 0 關注
  • 464 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號