IValidator.Validate方法并向自定义类型添加错误消息

问题描述:

我有几个服务器控件实现了IValidator接口。因此,他们有自己的Validate()方法,看起来像这样。IValidator.Validate方法并向自定义类型添加错误消息

public void Validate() 
{ 
    this.IsValid = true; 
    if (someConditionFails()) 
    { 
    ErrorMessage = "Condition failed!"; 
    this.IsValid = false; 
    } 
} 

据我所知,这些Validate()方法是保存按钮的事件处理程序之前执行加载完成事件之前在回发执行。我想要做的是传入一个自定义类的实例的引用,该实例收集可以从“保存”按钮事件处理程序访问的所有错误消息。

换句话说,我愿做这样的事情:

public void Validate(ref SummaryOfErrorMessages sum) 

我想我不能这样做,因为签名是从什么IValidator接口有不同。我能想到的另一个选项是Load Completed事件,我将遍历页面上的所有验证器,获取IsValid = false,并在那里创建我的SummaryOfErrorMessages。这听起来正确吗?有没有更好的方法来做到这一点?

验证完成后,我会遍历页面上的所有验证器并获取摘要。你可以从Page.Validators找到所有的验证器。

作为警告,请注意,仅使用IValidator并且不从BaseValidator继承的验证程序根本不支持验证组,因此似乎不会从BaseValidator继承有点不推荐。我被这一次咬了。

+0

@Matti - 感谢有关验证组的说明。我创建了一个覆盖的Page.Validate,它不仅抓取BaseValidators,还抓取IValidator。所以一切都很好。 我想我必须做一些像Page.Validators [x] .IsValid,然后相应地添加消息。不知何故,这感觉就像一个黑客。我想以某种方式将所有消息添加到各个IValidators中 – Nick 2010-03-31 21:48:29