Asp.net MVC驗證哪些事(2)-- 驗證規則總結以及使用


上篇文章Asp.net MVC驗證那些事(1)-- 介紹和驗證規則使用中,介紹了Asp.net MVC中的驗證功能以及如何使用。這里將對MVC中內置的驗證規則進行總結。

一,查找所有驗證規則

上篇文章中提到,所有的驗證規則都是位於下面的命名空間下:

using System.ComponentModel.DataAnnotations;

我們可以用ILSpy反編譯工具,看看這個命名空間下都有些什么. 下面的圖讓我們一目了然,在這個命名空間下,.net為我們提供了那些驗證規則。

不過,有三點需要注意:

1. 列出的類基本都是Attribute,如果不理解Attribute,可以看這里.Net Attribute詳解(上)-Attribute本質以及一個簡單示例
2. 正如Annotation的意識是“注釋”, 這個命名空間下的類的本質是為數據類型添加注釋和解釋。驗證規則也是一種注釋,是對於數據規范要求的注釋。
所以下面的所有類並不全是驗證規則, 比如DisplayAttribute使用與顯示,KeyAttribute常常用於定義主鍵, 以后有機會再和大家分享.
3. 之所以這些類不在System.Web命名空間下,是因為這些驗證規則是不單單用於MVC項目中的,實際上它們可以用於任何地方,MVC驗證只是其中一處。

 blog1

二,使用驗證Attribute的Model

本文中,涉及的驗證規則,都應用到下面的Employee Model上, 對照下面的驗證規則的解釋,就能非常容易明白每項驗證功能的作用了。

public class Employee
    {
        public int EmpId { get; set; }
        [DisplayName("Employee Name")]
        [Required(ErrorMessage = "Employee Name is required")]
        [StringLength(100, MinimumLength = 3)]
        public String EmpName { get; set; }

        [DisplayName("Password")]
        [DataType(DataType.Password)]
        [Required]
        public string Password { get; set; }

        [CompareAttribute("Password")]
        [DataType(DataType.Password)]
        public string ConfirmPassword { get; set; }

        [Required(ErrorMessage = "Employee Address is required")]
        [StringLength(300)]
        public string Address { get; set; }

        [Required(ErrorMessage = "Salary is required")]
        [Range(3000, 10000000, ErrorMessage = "Salary must be between 3000 and 10000000")]
        public int Salary { get; set; }

        [DisplayName("Credit Card")]
        [CreditCard(ErrorMessage = "Please enter correct credit card number.")]
        public string CreditCardNumber { get; set; }

        [Required(ErrorMessage = "Please enter your email address")]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "Email address")]
        [MaxLength(50)]
        [EmailAddress(ErrorMessage = "Please enter correct email")]
        public string Email { get; set; }
    }

三,具體驗證規則

下面就來一一介紹我們可以用於MVC項目中的驗證規則:

1. RequiredAttribute
必填項檢查,應用上該特性的字段,必須輸入值。

cnblogs-justrun1983-blog1

2. CompareAttribute
CompareAttribute用於比較2個屬性是否相同. 注冊用戶的時候,常常需要輸入2次密碼,其中一個是確認的密碼,要求2個密碼框中的密碼必須相同,這個時候就可以應用CompareAttribute

cnblogs-justrun1983-blog2

3. RangeAttribute
用來限定數據范圍,比如Age年齡字段,你可以限制數據必須在0~150之間。

cnblogs-justrun1983-blog3

4. StringLengthAttribute,MaxLengthAttribute和MinLengthAttribute
這3個都是用來對於字符串屬性長度進行驗證的。StringLength用來限定具體的長度,而后面的,一個是最大可輸入長度,一個是最小的輸入長度, 注意MaxLength和MinLength可以用於String和Array。

cnblogs-justrun1983-blog4

5. CreditCardAttribute驗證
這個是用來驗證信用卡的,支持多種類型信用卡的驗證。

cnblogs-justrun1983-blog5

 

6. EmailAddressAttribute和UrlAttribute
這個非常簡單,就是用來驗證Email格式和Url格式的

7. FileExtensionsAttribute
用來檢查文件名稱后綴。假如你禁止上傳.exe文件到服務器,這個時候,就可以通過它來做限制。

8. RegularExpressionAttribute
最后,如果上面的這些都無法符合你的要求,可以試試這個RegularExpressionAttribute. 它可以指定一個正則表達式作為驗證規則。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM