我有一个有多个控件的表单。
使用 BindingSource,我将 MyClass 的属性绑定到控件。
这些属性具有自定义验证属性,这些属性覆盖两个 IsValid-Methods:
IsValid(object value);
IsValid(object value, ValidationContext validationContext);
当我在控件中输入某些内容时,属性会正确验证,但是使用我的自定义验证属性,它只能通过 IsValid(对象值(-方法进行验证。是否可以强制验证通过IsValid(对象值,ValidationContext validationContext(运行?
有人能解释这种行为吗?
我确实意识到如果我使用 Validator 类,它将通过 IsValid(对象值,ValidationContext validationContext(运行,但我不希望验证由表单/数据绑定自动处理。
在这里找到了这个问题的解决方案:如何创建自定义验证属性?
瑞安对所选答案的评论(6月29日(对此进行了解释。我所要做的就是添加这个:
public override bool RequiresValidationContext { get { return true; } }
现在总是调用IsValid(object,ValidationContext(。