asp.net mvc3 資料驗證(二)——錯誤資訊的自定義及其本地化
阿新 • • 發佈:2019-01-07
一、自定義錯誤資訊
在上一篇文章中所做的驗證,在介面上提示的資訊都是系統自帶的,有些讀起來比較生硬。比如:
;
如果你的環境是英文的,那麼你的提示資訊就是中英文夾雜的了。 在這種情況下就需要用到自定義錯誤資訊了。其實很簡單,就是在model的驗證特性中加上[ErrorMessage]。比如: Model:
[Required(ErrorMessage = "使用者名稱不能為空!")] [Display(Name = "使用者名稱")] [Remote("CheckUserName驗證結果: ErrorMessage允許開發者使用{0}佔位符來顯示欄位的顯示名(即[Display(Name = "使用者名稱")]),如果沒有Display特性,那麼會顯示屬性名。如: Model:","Account")] public string UserName { get; set; }
[Required(ErrorMessage = "{0}不能為空!")] [Display(Name = "使用者名稱")] [Remote("CheckUserName","Account驗證結果: 若為:")] public string UserName { get; set; }
[Required(ErrorMessage = "{0}不能為空!")] //[Display(Name = "使用者名稱")] [Remote("CheckUserName","Account")] public string UserName { get; set; }則驗證結果為: 如果驗證的特性中還有其他引數,那麼ErrorMessage可以用佔位符直接顯示其他引數,如 Model:
[Required] [StringLength(100, ErrorMessage = "請輸入{2}到{1}位的{0}。", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "密碼")] public string Password { get; set; }驗證結果: 二、錯誤資訊的本地化 如果你做的專案是要分發到不同的國家,那麼就需要做本地化。而對於錯誤資訊而言,也有這樣的功能,方法如下: 1、在專案中新增兩個資原始檔ErrorMessages.resx以及ErrorMessages.en-US.resx: 2、在兩個資原始檔中都加入名稱為UserNameRequire的資源,值分別為中英文下的提示資訊: 3、在web.config的<system.web>節點加入<globalization uiCulture="auto"/>,隨著瀏覽器的設定來更換資原始檔。 4、在Model中也如如下程式碼:
[Required(ErrorMessageResourceType = typeof(ErrorMessages), ErrorMessageResourceName = "UserNameRequire")] [Display(Name = "使用者名稱")] public string UserName { get; set; }5、執行結果: 中文環境下: 英文環境下: 好了,mvc3中錯誤資訊的自定義和本地化比較簡單,暫時總結這麼多,下一篇就要講自定義資料驗證了。