多个字段的ASP.NET Validator

时间:2014-05-27 13:48:55

标签: c# asp.net validation

这将是两部分问题:

  1. 我有多个文本框。所有这些都是必填字段。如何使用一个验证器验证所有文本框? (即如果任何一个textbox-es为空,它将返回错误)

  2. 我有多个文本框。至少其中一个是必填字段。如何使用一个验证器来验证这些条件? (即如果所有文本框都为空,它将返回错误,但只要其中一组textbox-es中包含某些内容,它就会返回。)

3 个答案:

答案 0 :(得分:5)

您需要使用Custom Validator (MSDN Link),因为您无法使用基于“单一控件”的验证器执行所需操作。

这将允许您编写客户端和服务器端代码,并做出相应的响应。

非常重要您实施服务器端代码,因为客户端很容易被知道他们正在做什么的人绕过。客户端只是一个很好的。

答案 1 :(得分:0)

为每个文本框设置必填字段验证器并将其分配给验证组。您可以使用ValidationSummary control在单个列表中显示所有结果。

如果您想要使用custom validator,可以使用{{3}}其中一个"逻辑。不幸的是,这将需要您实现客户端和服务器端验证代码,没有框外验证器。

答案 2 :(得分:0)

我不知道如何做到这一点,而不是创建自己的自定义验证属性。有很多方法可以实现这一点,但我会使用的方法是将属性分配给所有包含的属性,然后使用反射来检查它们中是否至少有一个值(通过检查它们是否具有值来识别它们)属性)。在ValidationAttribute的IsValid方法中,您拥有对实例和类型的所有访问权限,因此反射应该可以解决问题。此外,如果您希望客户端验证工作,您可以扩展IClientValidatable,通过GetClientValidationRules()规则参数发送所有必填字段的值,最后编写您自己的javascript函数来执行规则。这听起来是一项非常多的工作而且确实如此,但如果你足够灵活,它应该是可重复使用的。在属性中添加和删除属性应该包括/排除验证列表中的字段(如果我可以这样称呼它)。

当我遇到类似问题时,我会更熟悉这些内容: Conditional Validation in ASP MVC