如何:对照特定值验证 ASP.NET 服务器控件

更新:2007 年 11 月

通过使用 ASP.NET 验证控件,可以使用逻辑运算符对照一个特定值来验证用户输入。例如,您可以指定用户输入必须是“1950 年 1 月 1 日”之后的日期,或是一个大于等于 0 的整数值。或者,您还可以指定将用户输入与另一控件的值进行比较。

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

ASP.NET 网页中的用户输入可能包括潜在有害的客户端脚本。有关更多信息,请参见脚本侵入概述

对照特定值进行验证

  1. CompareValidator 控件添加到页中并设置下列属性:

    属性

    说明

    ControlToValidate

    用户必须为其提供值的控件的 ID。

    ErrorMessage, Text, Display

    一些属性,用于指定在用户跳过控件时显示的错误的文字内容和位置。有关详细信息,请参见如何:控制 ASP.NET 服务器控件的验证错误信息显示

  2. 通过设置以下属性来设置要比较的值:

    属性

    说明

    ValueToCompare

    - 或 -

    ControlToCompare

    以字符串形式输入的表达式。要与常数值进行比较,可设置 ValueToCompare 属性。要与另一个控件的值进行比较,请将 ControlToCompare 属性设置为该控件的 ID。(CompareValidator 控件将用户输入与其他控件的 ValidationPropertyAttribute 指定的任何属性进行比较)。如果同时设置 ValueToCompareControlToCompare,则 ControlToCompare 优先。

    Type

    要比较的两个值的数据类型。类型使用 ValidationDataType 枚举指定,该枚举允许您使用 StringIntegerDoubleDateCurrency 类型名。在执行比较之前,值将转换为此类型。有关更多信息,请参见如何:对照数据类型验证 ASP.NET 服务器控件

    Operator

    要使用的比较。指定一个运算符,该运算符使用 ValidationCompareOperator 枚举中定义的下列值之一:

    e303tf05.alert_note(zh-cn,VS.90).gif说明:

    在对另一控件的验证完成后,将忽略其他控件中的无效值并通过验证。有关详细信息,请参见 ASP.NET 服务器控件的特例验证结果

  3. 在代码中添加测试,以检查有效性。有关详细信息,请参见如何:以编程方式测试 ASP.NET 服务器控件的有效性

    下面的代码示例演示一个使用 CompareValidator 控件进行验证的 TextBox 控件。

    <table>
      <tr>
        <td>
          <asp:Textbox id="txtAge" runat="server"></asp:Textbox>
        </td>
        <td>
          <asp:CompareValidator id="CompareFieldValidator1" runat="server"
            ForeColor="Red"
            ControlToValidate="txtAge"
            ValueToCompare="0"
            Type="Integer"
            Operator="GreaterThanEqual"
            ErrorMessage="Please enter a whole number zero or greater.">
          </asp:CompareValidator >
        </td>
      </tr>
    </table>
    
    <table>
      <tr>
        <td>
          <asp:Textbox id="txtAge" runat="server"></asp:Textbox>
        </td>
        <td>
          <asp:CompareValidator id="CompareFieldValidator1" runat="server"
            ForeColor="Red"
            ControlToValidate="txtAge"
            ValueToCompare="0"
            Type="Integer"
            Operator="GreaterThanEqual"
            ErrorMessage="Please enter a whole number zero or greater.">
          </asp:CompareValidator >
        </td>
      </tr>
    </table>
    

    下面的代码示例演示将用户输入与另一控件的值进行比较的 CompareValidator。用户可以使用此页预定酒店房间。验证程序检查用户是否输入了早于到达日期的离开日期。(在实际的应用程序中,离开日期是必需的信息,并且也作为日期进行验证。)

    <table>
      <tr>
        <td>
          Arrive<asp:Textbox id="txtArrivalDate" runat="server"></asp:Textbox>
          Depart<asp:Textbox id="txtDepartureDate" runat="server"></asp:Textbox>
        </td>
        <td>
          <asp:CompareValidator id="CompareValidator1" runat="server"
            ForeColor="Red"
            ControlToValidate="txtDepartureDate"
            ControlToCompare="txtArrivalDate"
            Type="Date"       
            Operator="GreaterThanEqual"      
            ErrorMessage="Departure date cannot be earlier than arrival date.">
          </asp:CompareValidator >
        </td>
      </tr>
    </table>
    
    <table>
      <tr>
        <td>
          Arrive<asp:Textbox id="txtArrivalDate" runat="server"></asp:Textbox>
          Depart<asp:Textbox id="txtDepartureDate" runat="server"></asp:Textbox>
        </td>
        <td>
          <asp:CompareValidator id="CompareValidator1" runat="server"
            ForeColor="Red"
            ControlToValidate="txtDepartureDate"
            ControlToCompare="txtArrivalDate"
            Type="Date"       
            Operator="GreaterThanEqual"      
            ErrorMessage="Departure date cannot be earlier than arrival date.">
          </asp:CompareValidator >
        </td>
      </tr>
    </table>
    

请参见

概念

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

其他资源

验证 ASP.NET 控件