我在WPF应用程序中有一个View Model类,它有一些非常复杂的验证。我已经实现了IValidatableObject
接口来提供自定义验证逻辑。问题是我的IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
从未被调用过!
以下是尝试验证的代码:
Validator.TryValidateObject(RMA, new ValidationContext(RMA, null, null), result);
为什么Validator
对象没有调用我的自定义验证代码?
答案 0 :(得分:8)
问题是我在自定义类的其中一个字段上有[Required]
,Validator
在完成所有数据注释验证之前不会执行自定义验证。删除[Required]
允许执行自定义验证。
EDIT:
验证对象时,在Validator.ValidateObject中应用以下过程:
IValidatableObject
,则调用其Validate方法并返回任何失败http://jeffhandley.com/archive/2009/10/16/validator.aspx
验证将在步骤#2中止。