C#中 自定義驗證規則ValidationAttribute的使用


C#中 自定義驗證規則ValidationAttribute的使用

迷戀自留地
進行接口請求的時候難免會對請求字段進行驗證,驗證對象的所有字段的值是否合乎要求,如進行非空檢測,長度檢測等等。

Required

用法示例

[Required(ErrorMessage="請填寫名稱")]

如果屬性為null,"",或只包含空白字符,會引發異常(ModelState.IsValid會false)

RegularExpression

用法示例

[RegularExpression(pattern:@"^[1-9]\d*$",ErrorMessage ="請選擇部門")]

上面的示例是正整數檢測,其他常用正則表達式自行搜索

Compare

用來檢測兩個字段是否相等

示例

[Compare("NewPassword",ErrorMessage ="確認密碼和新密碼不一致,請檢查")]

MaxLength

示例

[MaxLength(length:11,ErrorMessage ="請填寫合法的手機號")]

當然手機號不可能是上面那種檢測,這里只是示例

這個注解最常用在字符串上,不過神奇的是也可以用在數組上面,非常有趣

MinLength

和上面MaxLength一樣

用來檢測數組非空挺好用的,但是注意是無法用到List類型的屬性上面的

Range

range除了能用來限定數字的使用范圍以外,還可以用來限定其他類型!(當然一般正則表達式可能用的更多)

示例

Range[0,100,ErrorMessage="請輸入0到100的數字"]

因為構造函數包含3種

RangeAttribute(int32,int32)

RangeAttribute(double,double)

RangeAttribute(Type,string,string)

StringLength
有了MaxLength和MinLength不知道還要StringLengthAttribute干嘛,請大佬解釋

CustomValidation

主要是用來執行自定義的驗證

構造方法的參數如下

Type validatorType :自定義驗證方法的類

string method:自定義驗證的方法名稱

這個類讓我們自定義格式檢驗注解變得簡單

先定義檢測方法

public class TestValidator
    {
        public static ValidationResult TestAge(int age)
        {
            if (age > 10 && age < 20)
            {
                return new ValidationResult("10<age<20,你太年輕了");
            }
            else
            {
                return ValidationResult.Success;
            }
        }
    }

然后應用注解

[CustomValidation(typeof(TestValidator),"TestAge")]
public int Age { get; set; }



免責聲明!

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



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