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; }