P28 输入验证:自定义Attribute



对类级别的属性进行验证,也可以针对属性。。这里博主要做的是争对类级别的
先在根目录建个文件夹叫做ValidationAttributes

这次来个不合理的需求,让EmployeeNo不能等于FirstName

新建类:EmployeeNoMustDifferentFromFirstNameAttribute.cs

收下是需要继承 ValidationAttribute然后需要重写一个方法。

重写IsValid方法。带参数ValidationContext参数的这个方法。

参数Object value就是我们要验证的对象。


value强转成dto对象


或者也可以这么写。validationContext.ObjectInstance总会得到这个类的对象。

如果用value的话,如果我作用与property属性这个级别的话,我就返回属性的值 ,作用于类的话,value就返回这个对象的值,所以value是可变化的,validationContext是不变的

用于class级别

运行程序测试


为什么没有返回我们想要的错误呢,因为employeeNo有一个属性级别的错误。

要求长度最低为10


都改成10位的



FirstName和LastName是通过接口验证的,

EmployeeAddDto是我们使用的自定义Attribute进行验证的


接口和Attribute他俩实现的效果基本是一样的。但是为什么要使用CustomAttribute呢?因为自定义的Attribute既可以作用于类级别,也可以作用于Property属性级别。
如果属性级别的验证出现错误的话,那么这个类级别,无论是自定义的属性还是实现的validate接口,都不会被执行了。所以自定义的属性,在某些方面还是强于接口的方式的




结束

posted @ 2020-03-23 22:10  高山-景行  阅读(256)  评论(0编辑  收藏  举报