AtLeastOneOfValidator 控件
使用此验证器控件来要求列表中至少有一个控件具有值。
引言
ASP.NET 包含许多有用的验证控件。不幸的是,这些控件有一些限制。 例如,假设您的表单上有几个字段,并希望要求用户在其中至少一个字段中输入数据。AtleastOneOfValidator
就是为解决该问题而构建的。此外,该控件允许您针对 CheckBox
、CheckBoxList
、RadioButtonList
和 Calendar
控件进行验证。虽然下载包括源代码,但本文仅提供有关如何使用包含的二进制文件的说明。
使用代码
首先将控件添加到您的工具箱或 <%@ Register/>
-注册程序集。 如果您需要这方面的帮助,已经有很多地方可以指导您完成该过程。现在,您可以像任何其他验证器控件一样,将控件拖放到您的表单上,或者以声明方式创建它。
在普通的验证器中,您现在将设置 ControlToValidate
属性,以及您需要的任何其他属性。 由于我们将验证多个控件而不是一个控件,因此您应该保留该属性。 取而代之的是,AtLeastOneOfValidator
提供了十个其他控件,分别命名为 ControlToValidate0
到 ControlToValidate9
。 您可以像设置 ControlToValidate
一样设置其中的任何一个。 无论您以什么顺序指定控件,该控件都将起作用。 您甚至可以跳过中间的属性。 请记住,验证将按顺序进行,以属性编号为准。
如果您需要验证 10 个以上的控件,或者您想要一次性设置所有控件,则还可以使用 ControlsToValidate
属性。 这只是一个字符串,接受以逗号分隔的控件 ID 列表。 请注意,此属性替换而不是补充其他十个属性。 如果您在设置其他属性后在设计器中设置此属性,您将覆盖它们。 反之亦然。 您应该将其视为修改相同值的不同方式。 如果您直接编辑 ASPX 代码,那么真正重要的是 ControlsToValidate
,而不是编号的属性。
设置这些属性后,它应该像任何其他验证器一样工作。 如果通过这些属性选择的任何控件都具有值,它将验证为真。 否则,它将验证为假。 如果选中了 CheckBox
和 RadioButton
,则认为它们具有值。 如果选择了任何一天或多天,则 Calendar
具有值。 如果常规验证器控件用于验证的值的修剪长度大于 0,则所有其他内容都具有值。
关注点
客户端验证适用于除 Calendar
控件之外的所有内容。 如果您包含 Calendar
控件,它将必须回发到页面才能完成验证。 由于 Calendar
控件在每次小改动后都几乎一定会回发,因此这并不是什么新鲜事。
我还想感谢 Scott Mitchell 的 这篇文章,没有它,我不可能编写这个控件。
该控件已经过测试,可在 IE7 和最新的 Firefox 3(在编写本文时为 beta 2)中使用。 我正在寻找人们在 Firefox 2 和更旧的版本、IE6、IE8 beta、Opera、Safari、Nautilus 和 Camino 中进行测试。 如果您可以在这些平台中的任何一个平台上对控件进行全面测试,请发表评论并告诉我结果如何。