一、自定義錯誤信息
在上一篇文章中所做的驗證,在界面上提示的信息都是系統自帶的,有些讀起來比較生硬。比如:
;
如果你的環境是英文的,那么你的提示信息就是中英文夾雜的了。
在這種情況下就需要用到自定義錯誤信息了。其實很簡單,就是在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中錯誤信息的自定義和本地化比較簡單,暫時總結這么多,下一篇就要講自定義數據驗證了。