MVC3中使用驗證介面卡修改預設的驗證提示資訊

weixin_34037977發表於2011-05-29

驗證

MVC中提供的模組驗證非常靈活,在System.ComponentModel.DataAnnotations名稱空間中提供了常用的一些驗證特性,如Required、Compare等。 所有的驗證特性都提供有ErrorMessage屬性給我們設定自定義的出錯提示資訊,比如我們可以這樣指定必填屬性的提示:[Required(ErrorMessage ="請輸入使用者名稱")]。 還可以通過設定ErrorMessageResourceType和 ErrorMessageResourceName屬性來使用系統資原始檔實現多語言支援(參考:http://haacked.com/archive/2009/12/12/localizing-aspnetmvc-validation.aspx)。

問題

專案中遇到問題,程式設計師為了省事驗證屬性都最簡化,比如必填欄位只指定了[Required]特性,這樣就導致了驗證錯誤提示資訊不太直觀,比如會這樣:

image  image

客戶比較挑剔,特別指定要消除雞腸文。按照上文提到的方法,可以給Required.Errormessage指定詳細的驗證資訊,但專案中的實體類較多,一一去修改的話工作量比較大。
於是尋找捷徑…

驗證介面卡

DataAnnotationsModelValidatorProvider提供有RegisterAdapter和RegisterAdapterFactory二個方法供我們註冊自己的驗證介面卡或介面卡工廠類。首先建立一個自己的介面卡MyRequiredAttributeAdapter:

image

從MVC內建的System.Web.Mvc.RequiredAttributeAdapter介面卡類繼承(RequiredAttributeAdapter的基類y就是DataAnnotationsModelValidator<RequiredAttribute>),覆蓋GetClientValidationRules方法,在這裡使用自定義的提示文字建立驗證規則類。

然後在程式啟動時註冊此介面卡:

image

編譯後再開啟頁面,提示資訊已經全部改變了。
image

省去了一個一個修改的麻煩。

相關文章