Web 窗体框架包含一组验证服务器控件,这些控件提供易用但功能强大的方法检查输入窗体的错误,并在必要时向用户显示消息。 验证控件像其他服务器控件一样添加到 Web 窗体页。有不同的控件用于特定的验证类型,如范围检查或模式匹配,以及确保用户不跳过输入字段的
RequiredFieldValidator。可以将多个验证控件附加到一个输入控件。例如,可以既指定需要输入,又指定输入必须包含特定范围的值。 验证控件使用 HTML 和 Web 服务器控件的有限子集。对于每个控件,特定的属性包含要验证的值。下表列出了可以验证的输入控件。
| 控件 | 验证属性 |
| HtmlInputText | Value |
| HtmlTextArea | Value |
| HtmlSelect | Value |
| HtmlInputFile | Value |
| TextBox | Text |
| ListBox | SelectedItem.Value |
| DropDownList | SelectedItem.Value |
| RadioButtonList | SelectedItem.Value |
验证控件类型 最简单的验证形式是必需的字段。如果用户在字段中输入任何值,则字段有效。如果页中的所有字段都有效,则页有效。下面的示例使用
RequiredFieldValidator 阐释了这一点。
还有用于特定验证类型(如范围检查或模式匹配)的验证控件。下表列出了验证控件。
| 控件名称 | 说明 |
| RequiredFieldValidator | 确保用户不跳过输入。 |
| CompareValidator | 使用比较运算符(小于、等于、大于等)将用户的输入与另一控件的常数值或属性值进行比较。 |
| RangeValidator | 检查用户的输入是否在指定的上下边界之间。 可以检查数字、字母或日期对内的范围。可以将边界表示为常数。 |
| RegularExpressionValidator | 检查输入是否与正则表达式定义的模式匹配。该验证类型允许检查可预知的字符序列,如社会保障号、电子邮件地址、电话号码、邮政编码等中的字符序列。 |
| CustomValidator | 使用您自己编写的验证逻辑检查用户的输入。该验证类型允许检查运行时导出的值。 |
| ValidationSummary | 以摘要的形式显示页上所有验证程序的验证错误。 |
客户端验证 验证控件总是在服务器代码中执行验证检查。然而,如果用户使用的浏览器支持 DHTML,则验证控件也可使用客户端脚本执行验证。在客户端验证中,当向服务器提交窗体时在客户端检测任何错误。如果发现任何验证程序有错误,将取消向服务器提交窗体,并显示验证程序的
Text 属性。这样可允许用户在向服务器提交窗体前更正输入。包含错误的字段一失去焦点,就立即重新验证字段值,从而为用户提供丰富的交互式验证体验。 注意,Web 窗体页框架总是在服务器上执行验证,即使已经在客户端执行了验证。这有助于防止用户能够通过模拟另一用户或预获准的事务避开验证。 默认情况下启用客户端验证。如果客户端可以,则将自动执行上层验证。若要禁用客户端验证,请将页的
ClientTarget 属性设置为“Downlevel”(“Uplevel”强制执行客户端验证)。
显示验证错误 在处理用户的输入时(如提交窗体时),Web 窗体页框架将用户的输入传递给关联的验证控件。验证控件测试用户的输入,并设置属性以指示输入是否通过了验证测试。处理完所有的验证控件后,将设置页上的
IsValid 属性。如果有任何控件显示验证检查失败,则整页设置为无效。 如果验证控件有错误,错误信息可由该验证控件显示在页中,或者显示在页上其他地方的
ValidationSummary 控件中。当页的
IsValid 属性为 false 时,显示
ValidationSummary 控件。它轮询页上的每个验证控件,并聚合每个控件公开的文本消息。下面的示例阐释如何用
ValidationSummary 控件显示错误。
使用
CompareValidator CompareValidator 服务器控件比较两个控件的值。
CompareValidator 使用三个键属性执行验证。
ControlToValidate 和
ControlToCompare 包含要比较的值。
Operator 定义要执行的比较类型,例如 Equal 或 Not Equal。
CompareValidator 通过将这些属性计算为表达式来执行验证,如下所示: ( ControlToValidate ControlToCompare ) 如果表达式计算为真,则验证结果有效。 下面的示例显示如何使用
CompareValidator 控件。
使用
RangeValidator RangeValidator 服务器控件测试输入值是否位于给定的范围内。
RangeValidator 使用三个键属性执行验证。
ControlToValidate 包含要验证的值。
MinimumValue 和
MaximumValue 定义有效范围的最小值和最大值。 本例显示如何使用
RangeValidator 控件。
使用正则表达式
RegularExpressionValidator 服务器控件检查输入是否与正则表达式定义的模式匹配。该验证类型允许检查可预知的字符序列,如社会保障号、电子邮件地址、电话号码、邮政编码等中的字符序列。
RegularExpressionValidator 使用两个键属性执行验证。
ControlToValidate 包含要验证的值。
ValidationExpression 包含要匹配的正则表达式。 这些示例阐释如何使用 RegularExpressionValidator 控件。
执行自定义验证
CustomValidator 服务器控件调用用户定义的函数以执行标准验证程序无法处理的验证。自定义函数可以在服务器上或客户端脚本(如 JScript 或 VBScript)中执行。对于客户端自定义验证,自定义函数的名称必须在
ClientValidationFunction 属性中标识。自定义函数的形式必须为 function myvalidator(source, arguments)请注意
source 是客户端
CustomValidator 对象,而
arguments 是具有
Value 和
IsValid 两个属性的对象。
Value 属性是要验证的值而
IsValid 属性是一个布尔值,用于设置验证的返回结果。 对于服务器端自定义验证,将自定义验证放置在验证程序的
OnServerValidate 委托中。 下面的示例显示如何使用
CustomValidator 控件。
合在一起 此示例显示一个典型的注册窗体,使用在本主题中讨论的验证控件的变体。
| 
[[url=http://chs.gotdotnet.com/quickstart/aspplus/samples/webforms/validate/VB/validator9.aspx]运行示例] | [查看源代码] |
[/url]