今天我們繼續ASP.NET 4.5 MVC 4.0,前兩天熟悉了MVC4.0在VS11和win8下的更新,以及MVC中的基礎語法和幾個關鍵字的使用。了解了這些就可以對MVC進一步認識,相信很多人都對MVC中三個模塊有一定的認識。今天我們主要來看一下Models模塊,這個和我們三層里用的實體類有點相似,不同的是這里的屬性需要添加一些驗證屬性(Attribute)或其他的一些Filter(過濾器)。在MVC中驗證屬性主要包含在System.ComponentModel.DataAnnotations.dll程序集中,所以需要對其添加引用。
首先我們先看一下注冊模型的代碼,然后對其中使用到的驗證屬性等進行進一步的認識,代碼如下。
2 {
3 [Required]
4 [Display(Name = " User name ")]
5 public string UserName { get; set; }
6
7 [Required]
8 [DataType(DataType.EmailAddress)]
9 [Display(Name = " Email address ")]
10 public string Email { get; set; }
11
12 [Required]
13 [StringLength( 100, ErrorMessage = " The {0} must be at least {2} characters long. ", MinimumLength = 6)]
14 [DataType(DataType.Password)]
15 [Display(Name = " Password ")]
16 public string Password { get; set; }
17
18 [DataType(DataType.Password)]
19 [Display(Name = " Confirm password ")]
20 [Compare( " Password ", ErrorMessage = " The password and confirmation password do not match. ")]
21 public string ConfirmPassword { get; set; }
22 }
一、RequiredAttribute屬性
使用這個標記的屬性表示必須,如果客戶端返回的數據中沒有設置此項,則在ModelState.IsValid屬性將為false。錯誤信息將會包含在ModelState對象里,客戶端就可以通過@Html.ValidationMessageFor來顯示模型屬性驗證錯誤信息。讓我們打開VS11自帶的Internet Application項目,並使用Page Inspector來調試程序,雙擊注冊按鈕,我們就可以看到這個驗證的相關信息,如下圖所示。
在圖中就可以看到這個注冊模型RequiredAttribute驗證標記的驗證信息,在input標記中的data-val-required屬性呈現的是嚴重信息,這些屬性都是微軟擴展的供JQuery和其驗證擴展庫使用。如果你對客戶端驗證感興趣可以研究一下Scripts目錄下的“jquery.validate.js”和“jquery.validate.unobtrusive.js”,這樣你就會知道他是如何工作的了。
二、DisplayAttribute屬性
這個屬性主要用於前台顯示時的字符串,比如注冊模型中的UserName屬性在前台顯示的就是“User name”,從上面圖片中的HTML代碼中就可以看出來。當然我們也可以把它改成“用戶名”,這樣執行后就不會顯示英文了。
三、StringLengthAttribute屬性
這個屬於驗證屬性,用於判斷當前屬性字符串長度,可以用設置最小值和最大值。這個比較少用,我做過的項目只有在密碼上回用這個,其他一般會給正則表達式進行驗證。
四、CompareAttribute屬性
這個驗證屬性主要用於對比兩個屬性的值是否相同,一般用於密碼和確認密碼,因為這兩個是要一樣的。
五、RegularExpressionAttribute屬性
這個屬性將使用參數里設置的正則表達式來驗證當前屬性是否合法,這個我會比較常用,像用戶注冊等等都會對其進行驗證。
六、RangeAttribute屬性
這個屬性為范圍區間驗證,可以是數字,也可以是對象,需要指定最小值和最大值,如果不是數字還需要指定對比的類型。
七、RemoteAttribute屬性
這個屬性實現了遠處驗證,參數主要是設置服務端的控制器和方法名稱,比如我們的要驗證注冊模型中的UserName是否已經被注冊,就可以使用這個Remote屬性。
在寫這篇文章的時候發現基本屬於3.0的范疇,在博客園中已經有人寫的比我好,可能是因為在我看來很多都已經知道了,沒必要寫出來。我在博客園里收了一下“MVC 3.0系列”感謝一下“記憶失去的青春”,又不懂的可以看看他寫的系列文章。下一篇文章我將主要注意ASP.NET MVC4.0的更新內容,而3.0中有用到的一些技巧進行說明。