gpt4 book ai didi

asp.net - 如何获取页面中的所有验证器?

转载 作者:行者123 更新时间:2023-12-02 02:03:26 25 4
gpt4 key购买 nike

我认为 RequiredFieldValidators、CustomValidators 和所有其他验证器都将存在于 Controls 集合中。基本上我有一个用户控件,里面有很多验证器,我想控制它们来做一些事情。

Page.Validators 似乎返回一个 IValidator 对象列表,这不是我要找的。

我在哪里可以获得用户控件中所有验证器的列表?

最佳答案

Page.Validators 集合是您最好的选择;所有验证器都实现了 IValidator,然后又实现了 BaseValidator,因此您可以用这个来做那个。由于验证器是一个控件,它的父引用路径将包含对它所在的用户控件的引用。它可能需要您执行类似以下操作:

if (validator.Parent.Parent.Parent.Parent is UserControl) { }

但这是解决这个问题的唯一方法。因此,Page.Validators 的组合和检查父控件树是唯一的方法,除非您查找验证器实现的特定验证组,这也是另一种方式(BaseValidator 的属性,因此您必须执行类型检查和转换。

还有最后一个可能的选择;您可以重写 AddedControl,它在每次添加控件时执行,并检查控件是否是验证器,然后将该控件保存在本地集合中,例如:

private List<BaseValidator> _vals = ..;

protected overrides void AddedControl(Control control, int index) {
if (control is BaseValidator)
_vals.Add((BaseValidator)control);
}

然后您就会知道哪些控件属于该用户控件。我已经使用自定义控件完成了此操作,而不是使用用户控件,因此可能无法完全按照我提到的那样工作...

关于asp.net - 如何获取页面中的所有验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16109618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com