Loading... # C#中 自定义验证规则ValidationAttribute的使用 [迷恋自留地](https://hunji.xyz/) 进行接口请求的时候难免会对请求字段进行验证,验证对象的所有字段的值是否合乎要求,如进行非空检测,长度检测等等。 ### 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:自定义验证的方法名称 这个类让我们自定义格式检验注解变得简单 先定义检测方法 ```csharp public class TestValidator { public static ValidationResult TestAge(int age) { if (age > 10 && age < 20) { return new ValidationResult("10<age<20,你太年轻了"); } else { return ValidationResult.Success; } } } ``` 然后应用注解 ```csharp [CustomValidation(typeof(TestValidator),"TestAge")] public int Age { get; set; } ``` ![](https://img-blog.csdnimg.cn/0c588570d8c14e1f84d20a80772e3501.png) 最后修改:2021 年 09 月 04 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏