對照常數值或其他輸入控制項的值來評估輸入控制項的值,以判斷兩值是否符合比較運算子 (小於、等於或大於等等) 所指定的關聯性 (Relationship)。
<asp:CompareValidator
id="ProgrammaticID"
ControlToValidate="Programmatic ID of Server Control to Validate"
ValueToCompare="value" ControlToCompare="value" Type="DataType" Operator="Operator Value" ErrorMessage="Message to display in ValidationSummary control" Text="Message to display in control" ForeColor="value" BackColor="value" ... runat="server" > </asp:CompareValidator>
備註
CompareValidator 控制項可以讓您將使用者輸入至輸入控制項 (例如 TextBox 控制項) 的值與輸入另一個輸入控制項的值 (或常數值) 相比較。您也可以使用 CompareValidator 控制項來決定輸入至輸入控制項的值是否可以轉換成 Type 屬性所指定的資料型別。
指定輸入控制項,以藉由設定 ControlToValidate 屬性來進行驗證。如果您想要比較特定輸入控制項和另一個輸入控制項,請以要比較的控制項名稱來設定 ControlToCompare 屬性。
您可以比較輸入控制項的值和常數值,來代替比較兩個輸入控制項的值。設定 ValueToCompare 屬性,以指定要與之比較的常數值。
Operator 屬性可以讓您指定要執行的比較類型,例如大於、等於等等。如果將 Operator 屬性設為 ValidationCompareOperator.DataTypeCheck,CompareValidator 控制項會忽略 ControlToCompare 和 ValueToCompare 屬性,並且簡單地指示輸入至輸入控制項的值是否可以轉換成 Type 屬性所指定的資料型別。
**注意 **如果輸入控制項為空白,則沒有驗證函式會被呼叫,並且驗證成功。使用 RequiredFieldValidator 控制項來避免使用者略過輸入控制項。
如需 CompareValidator 控制項的詳細資訊,請參閱 CompareValidator 類別。
範例
下列範例示範如何使用 CompareValidator 控制項來驗證輸入至文字方塊中的值是否符合輸入至另一個文字方塊的值。驗證結果然後會被顯示在網頁上。
<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
Sub Button_Click(sender As Object, e As EventArgs)
If Page.IsValid Then
lblOutput.Text = "Result: Valid!"
Else
lblOutput.Text = "Result: Not valid!"
End If
End Sub
Sub Operator_Index_Changed(sender As Object, e As EventArgs)
Compare1.Operator = CType(ListOperator.SelectedIndex, ValidationCompareOperator)
Compare1.Validate()
End Sub
Sub Type_Index_Changed(sender As Object, e As EventArgs)
Compare1.Type = CType(ListType.SelectedIndex, ValidationDataType)
Compare2.Type = CType(ListType.SelectedIndex, ValidationDataType)
Compare1.Validate()
End Sub
</script>
</head>
<body>
<form runat="server">
<h3>CompareValidator Example</h3>
<p>
Enter a value in each textbox. Select a comparison operator<br>
and data type. Click "Validate" to compare values.
<table bgcolor="#eeeeee" cellpadding="10">
<tr valign="top">
<td>
<h5>String 1:</h5>
<asp:TextBox id="TextBox1"
runat="server"/>
<br>
<asp:CompareValidator id="Compare1"
ControlToValidate="TextBox1"
ControlToCompare="TextBox2"
Type="String"
EnableClientScript="false"
Text="Failed Validation"
runat="server"/>
</td>
<td>
<h5>Comparison Operator:</h5>
<asp:ListBox id="ListOperator"
OnSelectedIndexChanged="Operator_Index_Changed"
runat="server">
<asp:ListItem Selected Value="Equal" >Equal</asp:ListItem>
<asp:ListItem Value="NotEqual" >NotEqual</asp:ListItem>
<asp:ListItem Value="GreaterThan" >GreaterThan</asp:ListItem>
<asp:ListItem Value="GreaterThanEqual" >GreaterThanEqual</asp:ListItem>
<asp:ListItem Value="LessThan" >LessThan</asp:ListItem>
<asp:ListItem Value="LessThanEqual" >LessThanEqual</asp:ListItem>
<asp:ListItem Value="DataTypeCheck" >DataTypeCheck</asp:ListItem>
</asp:ListBox>
</td>
<td>
<h5>String 2:</h5>
<asp:TextBox id="TextBox2"
runat="server"/>
<br>
<asp:CompareValidator id="Compare2"
ControlToValidate="TextBox2"
Operator="DataTypeCheck"
EnableClientScript="false"
Text="Invalid Data Type"
runat="server"/>
<br>
<asp:Button id="Button1"
Text="Validate"
OnClick="Button_Click"
runat="server"/>
</td>
</tr>
<tr>
<td colspan="3" align="center">
<h5>Data Type:</h5>
<asp:ListBox id="ListType"
OnSelectedIndexChanged="Type_Index_Changed"
runat="server">
<asp:ListItem Selected Value="String" >String</asp:ListItem>
<asp:ListItem Value="Integer" >Integer</asp:ListItem>
<asp:ListItem Value="Double" >Double</asp:ListItem>
<asp:ListItem Value="Date" >Date</asp:ListItem>
</asp:ListBox>
</td>
</tr>
</table>
<br>
<asp:Label id="lblOutput"
Font-Name="verdana"
Font-Size="10pt"
runat="server"/>
</form>
</body>
</html>
[C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
void Button_Click(Object sender, EventArgs e)
{
if (Page.IsValid)
{
lblOutput.Text = "Result: Valid!";
}
else
{
lblOutput.Text = "Result: Not valid!";
}
}
void Operator_Index_Changed(Object sender, EventArgs e)
{
Compare1.Operator = (ValidationCompareOperator)ListOperator.SelectedIndex;
Compare1.Validate();
}
void Type_Index_Changed(Object sender, EventArgs e)
{
Compare1.Type = (ValidationDataType)ListType.SelectedIndex;
Compare2.Type = (ValidationDataType)ListType.SelectedIndex;
Compare1.Validate();
}
</script>
</head>
<body>
<form runat="server">
<h3>CompareValidator Example</h3>
<p>
Enter a value in each textbox. Select a comparison operator<br>
and data type. Click "Validate" to compare values.
<table bgcolor="#eeeeee" cellpadding="10">
<tr valign="top">
<td>
<h5>String 1:</h5>
<asp:TextBox id="TextBox1"
runat="server"/>
<br>
<asp:CompareValidator id="Compare1"
ControlToValidate="TextBox1"
ControlToCompare="TextBox2"
Type="String"
EnableClientScript="false"
Text="Failed Validation"
runat="server"/>
</td>
<td>
<h5>Comparison Operator:</h5>
<asp:ListBox id="ListOperator"
OnSelectedIndexChanged="Operator_Index_Changed"
runat="server">
<asp:ListItem Selected Value="Equal" >Equal</asp:ListItem>
<asp:ListItem Value="NotEqual" >NotEqual</asp:ListItem>
<asp:ListItem Value="GreaterThan" >GreaterThan</asp:ListItem>
<asp:ListItem Value="GreaterThanEqual" >GreaterThanEqual</asp:ListItem>
<asp:ListItem Value="LessThan" >LessThan</asp:ListItem>
<asp:ListItem Value="LessThanEqual" >LessThanEqual</asp:ListItem>
<asp:ListItem Value="DataTypeCheck" >DataTypeCheck</asp:ListItem>
</asp:ListBox>
</td>
<td>
<h5>String 2:</h5>
<asp:TextBox id="TextBox2"
runat="server"/>
<br>
<asp:CompareValidator id="Compare2"
ControlToValidate="TextBox2"
Operator="DataTypeCheck"
EnableClientScript="false"
Text="Invalid Data Type"
runat="server"/>
<br>
<asp:Button id="Button1"
Text="Validate"
OnClick="Button_Click"
runat="server"/>
</td>
</tr>
<tr>
<td colspan="3" align="center">
<h5>Data Type:</h5>
<asp:ListBox id="ListType"
OnSelectedIndexChanged="Type_Index_Changed"
runat="server">
<asp:ListItem Selected Value="String" >String</asp:ListItem>
<asp:ListItem Value="Integer" >Integer</asp:ListItem>
<asp:ListItem Value="Double" >Double</asp:ListItem>
<asp:ListItem Value="Date" >Date</asp:ListItem>
</asp:ListBox>
</td>
</tr>
</table>
<br>
<asp:Label id="lblOutput"
Font-Name="verdana"
Font-Size="10pt"
runat="server"/>
</form>
</body>
</html>