65.9K
CodeProject 正在变化。 阅读更多。
Home

AtLeastOneOfValidator 控件

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.07/5 (5投票s)

2008 年 3 月 7 日

CDDL

3分钟阅读

viewsIcon

30437

downloadIcon

245

使用此验证器控件来要求列表中至少有一个控件具有值。

引言

ASP.NET 包含许多有用的验证控件。不幸的是,这些控件有一些限制。 例如,假设您的表单上有几个字段,并希望要求用户在其中至少一个字段中输入数据。AtleastOneOfValidator 就是为解决该问题而构建的。此外,该控件允许您针对 CheckBoxCheckBoxListRadioButtonListCalendar 控件进行验证。虽然下载包括源代码,但本文仅提供有关如何使用包含的二进制文件的说明。

使用代码

首先将控件添加到您的工具箱或 <%@ Register/>-注册程序集。 如果您需要这方面的帮助,已经有很多地方可以指导您完成该过程。现在,您可以像任何其他验证器控件一样,将控件拖放到您的表单上,或者以声明方式创建它。

在普通的验证器中,您现在将设置 ControlToValidate 属性,以及您需要的任何其他属性。 由于我们将验证多个控件而不是一个控件,因此您应该保留该属性。 取而代之的是,AtLeastOneOfValidator 提供了十个其他控件,分别命名为 ControlToValidate0ControlToValidate9。 您可以像设置 ControlToValidate 一样设置其中的任何一个。 无论您以什么顺序指定控件,该控件都将起作用。 您甚至可以跳过中间的属性。 请记住,验证将按顺序进行,以属性编号为准。

如果您需要验证 10 个以上的控件,或者您想要一次性设置所有控件,则还可以使用 ControlsToValidate 属性。 这只是一个字符串,接受以逗号分隔的控件 ID 列表。 请注意,此属性替换而不是补充其他十个属性。 如果您在设置其他属性后在设计器中设置此属性,您将覆盖它们。 反之亦然。 您应该将其视为修改相同值的不同方式。 如果您直接编辑 ASPX 代码,那么真正重要的是 ControlsToValidate,而不是编号的属性。

设置这些属性后,它应该像任何其他验证器一样工作。 如果通过这些属性选择的任何控件都具有值,它将验证为真。 否则,它将验证为假。 如果选中了 CheckBoxRadioButton,则认为它们具有值。 如果选择了任何一天或多天,则 Calendar 具有值。 如果常规验证器控件用于验证的值的修剪长度大于 0,则所有其他内容都具有值。

关注点

客户端验证适用于除 Calendar 控件之外的所有内容。 如果您包含 Calendar 控件,它将必须回发到页面才能完成验证。 由于 Calendar 控件在每次小改动后都几乎一定会回发,因此这并不是什么新鲜事。

我还想感谢 Scott Mitchell 的 这篇文章,没有它,我不可能编写这个控件。

该控件已经过测试,可在 IE7 和最新的 Firefox 3(在编写本文时为 beta 2)中使用。 我正在寻找人们在 Firefox 2 和更旧的版本、IE6、IE8 beta、Opera、Safari、Nautilus 和 Camino 中进行测试。 如果您可以在这些平台中的任何一个平台上对控件进行全面测试,请发表评论并告诉我结果如何。

© . All rights reserved.