1. 程式人生 > >asp.net mvc3 資料驗證(二)——錯誤資訊的自定義及其本地化

asp.net mvc3 資料驗證(二)——錯誤資訊的自定義及其本地化

一、自定義錯誤資訊         在上一篇文章中所做的驗證,在介面上提示的資訊都是系統自帶的,有些讀起來比較生硬。比如:

        如果你的環境是英文的,那麼你的提示資訊就是中英文夾雜的了。         在這種情況下就需要用到自定義錯誤資訊了。其實很簡單,就是在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中錯誤資訊的自定義和本地化比較簡單,暫時總結這麼多,下一篇就要講自定義資料驗證了。