ASP.NET 服务器控件的特例验证结果

更新:2007 年 11 月

验证可以确保用户输入符合您指定的条件。在大多数情况下,这一操作比较简单。但有时对输入进行验证会引入特殊的条件。了解这些条件是什么、验证如何执行以及有哪些可能的验证结果是非常重要的。

与空白字段的对比

如果字段为空白,则除 RequiredFieldValidator 控件之外的所有验证控件都会将该字段视为有效字段。您必须使用 RequiredFieldValidator 控件来避免用户将字段留为空白。例如,如果您将 RangeValidator 控件附加到一个日期字段,则当用户输入了指定范围内的日期或将该字段留为空白时,都将通过验证。如果要确保用户输入日期,则除了范围检查之外,您还必须向该日期字段添加 RequiredFieldValidator 控件。

与其他控件的对比

使用 CompareValidator 控件时,您可以指定对照另一控件的值执行验证。例如,您有两个用于输入日期的字段,一个用于开始日期,一个用于结束日期。使用 CompareValidator 控件可以确保开始日期早于或等于结束日期。

c6k4b2x3.alert_security(zh-cn,VS.90).gif安全说明:

ASP.NET 网页中的用户输入可能包括恶意的客户端脚本。默认情况下,该页验证用户输入是否不包括脚本或 HTML 元素。有关更多信息,请参见脚本侵入概述

如果验证控件无法解析另一控件中的值,它们通常不会引发错误,相反,将会通过验证检查。如果其他控件中的值缺失,或者无法转换为 CompareValidator 控件的数据类型,则会发生这种情况。

由这些控件执行的特定测试和可能的结果如下所示:

  • 如果在起始控件的 ControlToValidate 属性中输入的目标控件没有值,则 IsValid 属性被视为 true 并且验证通过。

  • 如果 ControlToValidate 属性中的目标控件值无法转换为适当的数据类型,则 IsValid 被视为 false。

  • 如果 ControlToCompare 属性中的目标控件值无法转换为适当的数据类型,则 IsValid 被视为 true。

  • 最后,如果所有这些测试均已通过,则两个控件都为非空,并且可以转换为数据类型,因此控件将执行实际的比较并相应地设置 IsValid

这一策略可以防止对同一无效输入报告多个错误。验证控件设计用于只针对一个值来作出测试和报告,并在遇到错误时尽可能准确地显示消息。

例如,在结束日期的示例中,假定用户输入一个无效开始日期。用户随后输入结束日期。执行验证检查时(通常在服务器上),同一错误日期可能会在开始日期字段和结束日期字段都引发错误。为避免这一情况的发生,结束日期验证(依赖于另一字段的验证)将不引发错误。

因此,您应该确保为每个单独的字段提供了充分的验证。在本例中,将由您来确保用户在开始日期字段中输入了正确日期。在许多情况下,您应该将 RequiredFieldValidator 控件和测试特定输入内容的验证控件一起使用。在某些情况下,添加 Operator 属性设置为 DataTypeCheckCompareValidator 控件也很有用,它将执行简单的类型检查,而不与另一值或控件进行比较。

请参见

概念

ASP.NET 服务器控件验证类型

其他资源

验证 ASP.NET 控件