共用方式為


HOW TO:比對特定值驗證 ASP.NET 伺服器控制項

更新:2007 年 11 月

如果您使用 ASP.NET 驗證控制項,就可以使用邏輯運算子 (Logical Operator) 以特定值驗證使用者的輸入。例如,您可指定使用者的輸入是 1950 年 1 月 1 日之後的日期,或是大於等於零的整數。另一種方式是,您可指定使用者的輸入要與其他控制項的內容值相比較。

安全性注意事項:

使用者在 ASP.NET Web 網頁中輸入的內容可能會包含惡意的用戶端指令碼。如需詳細資訊,請參閱指令碼攻擊概觀

若要以特定值驗證

  1. CompareValidator 控制項加入至網頁,並設定下列屬性:

    屬性

    描述

    ControlToValidate

    控制項 ID,使用者必須為其提供內容值。

    ErrorMessage, Text, Display

    當使用者略過該控制項時,指定所顯示錯誤的文字及位置的屬性 (Property)。如需詳細資訊,請參閱 HOW TO:控制 ASP.NET 伺服器控制項的驗證錯誤訊息顯示

  2. 設定下列屬性 (Property) 來設定要比較的值:

    屬性

    描述

    ValueToCompare

    - 或 -

    ControlToCompare

    輸入為字串的運算式。若要與常數值比較,請設定 ValueToCompare 屬性。若要與其他控制項的值比較,請將 ControlToCompare 屬性設為該控制項的 ID (CompareValidator 控制項會比較使用者的輸入和其他控制項之 ValidationPropertyAttribute 所指定的任何屬性)。如果您同時設定了 ValueToCompareControlToCompare,則 ControlToCompare 具有較高的順位。

    Type

    將要進行比較的兩個值的資料型別。使用 ValidationDataType 列舉型別 (Enumeration) 指定型別,可讓您使用型別名稱 StringIntegerDoubleDateCurrency。執行比較前,內容值將轉換為這個型別。如需詳細資訊,請參閱 HOW TO:比對資料型別驗證 ASP.NET 伺服器控制項

    Operator

    要使用的比較。使用 ValidationCompareOperator 列舉型別中定義的下列其中一個值,指定運算子:

    注意事項:

    當比對其他控制項來完成驗證時,其他控制項的無效值將被忽略並且驗證會順利通過。如需詳細資訊,請參閱 ASP.NET 伺服器控制項的特殊狀況驗證結果

  3. 在程式碼中加入測試以檢查有效性。如需詳細資訊,請參閱 HOW TO:以程式的方式測試 ASP.NET 伺服器控制項的有效性

    下列程式碼範例會顯示使用 CompareValidator 控制項驗證的 TextBox 控制項。

    <table>
      <tr>
        <td>
          <asp:Textbox id="txtAge" ></asp:Textbox>
        </td>
        <td>
          <asp:CompareValidator id="CompareFieldValidator1" 
            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" ></asp:Textbox>
        </td>
        <td>
          <asp:CompareValidator id="CompareFieldValidator1" 
            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" ></asp:Textbox>
          Depart<asp:Textbox id="txtDepartureDate" ></asp:Textbox>
        </td>
        <td>
          <asp:CompareValidator id="CompareValidator1" 
            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" ></asp:Textbox>
          Depart<asp:Textbox id="txtDepartureDate" ></asp:Textbox>
        </td>
        <td>
          <asp:CompareValidator id="CompareValidator1" 
            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 控制項