自定义验证未执行
本文关键字:执行 验证 自定义 | 更新日期: 2023-09-27 18:06:15
我在WPF应用程序中有一个视图模型类,它有一些非常复杂的验证。我已经实现了IValidatableObject
接口来提供自定义验证逻辑。问题是我的IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
从来没有被调用!
Validator.TryValidateObject(RMA, new ValidationContext(RMA, null, null), result);
任何想法为什么Validator
对象不调用我的自定义验证代码?
问题是,我在自定义类中的一个字段上有[Required]
,并且Validator
将不会执行自定义验证,直到所有数据注释验证完成。删除[Required]
允许执行自定义验证。
EDIT:
在验证对象时,在Validator中应用以下过程。ValidateObject:
- 验证属性级属性
- 如果任何验证器无效,则中止验证并返回失败
- 验证对象级属性
- 如果任何验证器无效,则中止验证并返回失败
- 如果在桌面框架上并且对象实现了
IValidatableObject
,那么调用它的Validate方法并返回任何失败
验证将在第2步终止。