一、自訂錯誤資訊 在上一篇文章中所做的驗證,在介面上提示的資訊都是系統內建的,有些讀起來比較生硬。比如:
;
如果你的環境是英文的,那麼你的提示資訊就是中英文夾雜的了。 在這種情況下就需要用到自訂錯誤資訊了。其實很簡單,就是在model的驗證特性中加上[ErrorMessage]。比如: Model:
[Required(ErrorMessage = "使用者名稱不可為空。")] [Display(Name = "使用者名稱")] [Remote("CheckUserName","Account")] public string UserName { get; set; }
驗證結果:
ErrorMessage允許開發人員使用{0}預留位置來顯示欄位的顯示名(即 [Display(Name = "使用者名稱")]),如果沒有Display特性,那麼會顯示內容名。如: Model:
[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中錯誤資訊的自訂和本地化比較簡單,暫時總結這麼多,下一篇就要講自訂資料驗證了。