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