一、在動作方法中執行驗證
Controller中使用ModelState.AddModelError()方法在驗證中根據條件輸出錯誤信息。
如: ModelState.AddModelError("UserName", "用戶名不能為空");
需要注意的是,這句生成的是屬性級錯誤,因為AddModelError的第一個參數指定的是被驗證的屬性名;
如果要改成模型級錯誤,則保持第一個參數為空,如:ModelState.AddModelError("", "用戶名不能為空");
屬性級錯誤和模型級錯誤
屬性級錯誤是顯示在 字段后面
模型級錯誤是統一顯示在頁面指定的位置
(自己總結:模型級錯誤用處就是動作方法中邏輯處理過程需要拋出的錯誤)
如圖所示:

對應的cshtml頁面代碼:

Html.ValidationSummary()輔助器默認會顯示所有錯誤,包括模型級錯誤和屬性級錯誤。
重載 Html.ValidationSummary(true),boolean值為true代表只顯示模型級錯誤,忽略屬性級錯誤,如:

可以看到,現在它忽略了屬性級錯誤,只會顯示模型級的。
二、在模型類中執行驗證
在模型類中通過 驗證注解屬性 來指定驗證規則,驗證注解屬性有內建的默認模型綁定器DefaultModelBinder進行檢測並強制執行。
在對模型類運用綁定過程的任何地方都會強制執行驗證規則,而不只存在於個別方法中。
內建的驗證注解屬性有:
Compare
Range
RegularExpression
Required
StringLength
三、其他驗證方式
除了以上兩種之外,還有其他的方式進行模型驗證,如:
1、在模型綁定器中驗證;
2、創建自驗證模型;
詳見《精通ASP.NET MVC3框架》485頁、492頁