BaseValidator 类

用作验证控件的抽象基类。

**命名空间:**System.Web.UI.WebControls
**程序集:**System.Web(在 system.web.dll 中)

语法

声明
Public MustInherit Class BaseValidator
    Inherits Label
    Implements IValidator
用法
Dim instance As BaseValidator
public abstract class BaseValidator : Label, IValidator
public ref class BaseValidator abstract : public Label, IValidator
public abstract class BaseValidator extends Label implements IValidator
public abstract class BaseValidator extends Label implements IValidator

备注

BaseValidator 类为所有验证控件提供核心实现。验证控件用于验证关联的输入控件中的用户输入。当用户输入的值未通过验证时,验证控件将显示错误信息。由于验证控件是与输入控件分开的,您可以将错误信息定位在页面上相对于输入控件的任意位置。ASP.NET 提供了一些验证控件来执行特定类型的验证。下表描述了这些控件。

验证控件

说明

CompareValidator

通过将 CompareValidator.Operator 属性设置为 ValidationCompareOperator.DataTypeCheck,根据输入到另一个输入控件中的值、常数值或正确的数据类型来验证值。

CustomValidator

使用用户提供的自定义验证例程来验证值。

RangeValidator

验证值是否在值范围内。

RegularExpressionValidator

使用正则表达式来验证值。

RequiredFieldValidator

验证在必填字段中输入的值。

验证控件始终验证服务器上关联的输入控件。验证控件还具有完整的客户端实现,这使支持脚本的浏览器(如 Microsoft Internet Explorer 4.0 版和更高版本)可以在客户端上执行验证。客户端验证通过在向服务器发送用户输入前检查用户输入来增强验证过程。这样就可以在提交窗体前在客户端检测出错误,从而避免了服务器端验证所需要的信息往返。

多个验证控件可以与单个输入控件一起使用来验证不同的判据。例如,可以在 TextBox 控件上应用多个验证控件。可以使用 RangeValidator 控件确保在 TextBox 控件中输入的值在设置的范围内,还可以使用 RequiredFieldValidator 控件确保用户输入了值。

ASP.NET 提供了许多能够回发到服务器的控件。当这类控件的 CausesValidation 属性设置为 true 时,在该控件回发到服务器时执行验证。以下控件具有回发到服务器的能力:

提示

在这些控件中,有些仅在 AutoPostBack 属性设置为 true 时才回发到服务器。

这些控件各有一个 ValidationGroup 属性,设置此属性后,当控件触发服务器回发时,仅验证指定组中的验证控件。若要将验证控件分组,请将每个验证控件的 ValidationGroup 属性设置为相同的值。

若要将输入控件与验证控件关联起来,请使用 ControlToValidate 属性。若要指定在验证失败时验证控件中显示的文本,请使用 Text 属性。还可以使用 ValidationSummary 控件显示页面中所有验证失败的控件的摘要。若要指定 ValidationSummary 控件中显示的文本,请使用 ErrorMessage 属性。

提示

如果设置了 ErrorMessage 属性但没有设置 Text 属性,则验证控件中也将显示 ErrorMessage 属性的值。

在使用验证程序控件时,应该总是先检查服务器端验证结果,再执行处理。在回发之后但调用事件方法之前,该页将调用验证程序控件并将它们的结果聚集到 Page.IsValid 属性中。(您还可以使用 Validate 方法显式调用验证程序控件。)在您自己的代码中,应该先检查 Page.IsValid 属性是否返回了 true,然后再处理输入。即使支持脚本的浏览器可能在验证检查失败时禁止客户端上发生回发,您也应该总是先检查服务器代码中的 Page.IsValid,然后再处理验证的数据。

还可以手动执行验证。若要验证页面上的所有验证控件,请使用 Page.Validate 方法。通过使用控件的 Validate 方法可以验证个别的验证控件。

提示

如果使用 Page_Load 方法中的 Page.IsValid 属性,则必须首先显式调用 Page.Validate 方法。因为验证在页面的 Control.Load 事件后但在 ClickCommand 事件的事件处理程序前发生,所以直到调用 Page.Validate 方法后才会更新 Page.IsValid 属性。或者,您可以将代码置于 ClickCommand 事件的事件处理程序中,而不是置于 Page_Load 方法中。

并非所有的 Web 服务器控件都支持验证控件。可以用验证控件进行验证的标准控件包括:

提示

要对输入控件进行验证,必须将 System.Web.UI.ValidationPropertyAttribute 属性应用于该控件。

当验证失败时,可以通过将 SetFocusOnError 属性设置为 true,在关联的输入控件上设置焦点。

有关 BaseValidator 的实例的初始属性值列表,请参见 BaseValidator 构造函数。

辅助功能

默认情况下为此控件呈现的标记可能不符合 Web 内容辅助功能准则 1.0 (WCAG) 中优先级为 1 的准则等辅助功能标准。有关此控件的辅助功能支持的详细信息,请参见 ASP.NET 控件和辅助功能

给继承者的说明 当从 BaseValidator 类继承时,必须重写以下成员:EvaluateIsValid

示例

下面的代码示例演示如何使用多个验证控件来验证用户是否在 TextBox 控件中输入了有效值。

<%@ Page Language="VB" AutoEventWireup="False" %>

<script runat="server">
 
  Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs) Handles SubmitButton.Click
 
    If Page.IsValid Then
    
      MessageLabel.Text = "Page submitted successfully."
    
    Else
    
      MessageLabel.Text = "There is an error on the page."
    
    End If
    
  End Sub
 
</script>

<html>
  <body>
    <form runat="server">

      <h3>Validator Example</h3>
     
      Enter a number from 1 to 10.
      <asp:textbox id="NumberTextBox" 
        runat="server"/>

      <asp:rangevalidator id="NumberCompareValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"  
        type="Integer"
        display="Dynamic" 
        errormessage="Please enter a value from 1 to 10."
        maximumvalue="10"
        minimumvalue="1"  
        text="*"
        runat="server"/>

      <asp:requiredfieldvalidator id="TextBoxRequiredValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"
        display="Dynamic" 
        errormessage="Please enter a value."
        text="*"
        runat="server"/>

      <br><br>

      <asp:button id="SubmitButton"
        text="Submit"
        runat="server"/>
 
      <br><br>
       
      <asp:label id="MessageLabel" 
        runat="server"/>

      <br><br>

      <asp:validationsummary
        id="ErrorSummary"
        runat="server"/>
 
    </form>
  </body>
</html>
<%@ Page Language="C#" %>

<script runat="server">
 
  void Button_Click(Object sender, EventArgs e) 
  {
    if (Page.IsValid)
    {
      MessageLabel.Text = "Page submitted successfully.";
    }
    else
    {
      MessageLabel.Text = "There is an error on the page.";
    }
  }
 
</script>

<html>
  <body>
    <form runat="server">

      <h3>Validator Example</h3>
     
      Enter a number from 1 to 10.
      <asp:textbox id="NumberTextBox" 
        runat="server"/>

      <asp:rangevalidator id="NumberCompareValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"  
        type="Integer"
        display="Dynamic" 
        errormessage="Please enter a value from 1 to 10."
        maximumvalue="10"
        minimumvalue="1"  
        text="*"
        runat="server"/>

      <asp:requiredfieldvalidator id="TextBoxRequiredValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"
        display="Dynamic" 
        errormessage="Please enter a value."
        text="*"
        runat="server"/>

      <br><br>

      <asp:button id="SubmitButton"
        text="Submit"
        onclick="Button_Click"
        runat="server"/>
 
      <br><br>
       
      <asp:label id="MessageLabel" 
        runat="server"/>

      <br><br>

      <asp:validationsummary
        id="ErrorSummary"
        runat="server"/>
 
    </form>
  </body>
</html>
<%@ Page Language="JScript" %>

<script runat="server">
 
  function Button_Click(sender, e : EventArgs) 
  {
    if (Page.IsValid)
    {
      MessageLabel.Text = "Page submitted successfully.";
    }
    else
    {
      MessageLabel.Text = "There is an error on the page.";
    }
  }
 
</script>

<html>
  <body>
    <form runat="server">

      <h3>Validator Example</h3>
     
      Enter a number from 1 to 10.
      <asp:textbox id="NumberTextBox" 
        runat="server"/>

      <asp:rangevalidator id="NumberCompareValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"  
        type="Integer"
        display="Dynamic" 
        errormessage="Please enter a value from 1 to 10."
        maximumvalue="10"
        minimumvalue="1"  
        text="*"
        runat="server"/>

      <asp:requiredfieldvalidator id="TextBoxRequiredValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"
        display="Dynamic" 
        errormessage="Please enter a value."
        text="*"
        runat="server"/>

      <br><br>

      <asp:button id="SubmitButton"
        text="Submit"
        onclick="Button_Click"
        runat="server"/>
 
      <br><br>
       
      <asp:label id="MessageLabel" 
        runat="server"/>

      <br><br>

      <asp:validationsummary
        id="ErrorSummary"
        runat="server"/>
 
    </form>
  </body>
</html>

继承层次结构

System.Object
   System.Web.UI.Control
     System.Web.UI.WebControls.WebControl
       System.Web.UI.WebControls.Label
        System.Web.UI.WebControls.BaseValidator
           System.Web.UI.WebControls.BaseCompareValidator
           System.Web.UI.WebControls.CustomValidator
           System.Web.UI.WebControls.RegularExpressionValidator
           System.Web.UI.WebControls.RequiredFieldValidator

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

BaseValidator 成员
System.Web.UI.WebControls 命名空间
CompareValidator
CustomValidator
RangeValidator
RegularExpressionValidator
RequiredFieldValidator
ValidationSummary
CausesValidation
ErrorMessage
Text
ValidationGroup