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


posted @ 2021-09-04 16:37  今晚打老虎!  阅读(1171)  评论(0编辑  收藏  举报