更新:2007 年 11 月
將使用者在輸入控制項中輸入的值與在其他輸入控制項中輸入的值 (或常數值) 相比較。
命名空間:
System.Web.UI.WebControls 組件:
System.Web (在 System.Web.dll 中)
<AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level := AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level := AspNetHostingPermissionLevel.Minimal)> _
Public Class CompareValidator _
Inherits BaseCompareValidator
Dim instance As CompareValidator
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public class CompareValidator : BaseCompareValidator
[AspNetHostingPermissionAttribute(SecurityAction::InheritanceDemand, Level = AspNetHostingPermissionLevel::Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction::LinkDemand, Level = AspNetHostingPermissionLevel::Minimal)]
public ref class CompareValidator : public BaseCompareValidator
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal) */
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */
public class CompareValidator extends BaseCompareValidator
public class CompareValidator extends BaseCompareValidator
使用 CompareValidator 控制項,將使用者在輸入控制項 (例如 TextBox 控制項) 中輸入的值與在其他輸入控制項中輸入的值 (或常數值) 相比較。如果輸入控制項的值符合 Operator、ValueToCompare 和/或 ControlToCompare 屬性指定的準則,CompareValidator 控制項就會通過驗證。
您也可以使用 CompareValidator 控制項,以表示在輸入控制項中輸入的值是否可以轉換成 BaseCompareValidator..::.Type 屬性所指定的資料型別。
指定輸入控制項,以藉由設定 ControlToValidate 屬性來驗證。如果您想要比較特定輸入控制項和另一個輸入控制項,設定 ControlToCompare 屬性以指定要與之比較的控制項。
若不將輸入控制項的值與另一個輸入控制項的值相比較,您可以將輸入控制項的值與常數值相比較來代替。設定 ValueToCompare 屬性,以指定要與之比較的常數值。
使用 Operator 屬性來指定要執行的比對類型,例如大於、等於等。如果您將 Operator 屬性設定為 ValidationCompareOperator.DataTypeCheck,則 CompareValidator 控制項會忽略 ControlToCompare 和 ValueToCompare 屬性,並且只表示在輸入控制項中輸入的值是否可轉換成 BaseCompareValidator..::.Type 屬性所指定的資料型別。
BaseCompareValidator..::.Type 屬性用來指定比較值雙方的資料型別。兩個值在執行比較作業之前,會自動轉換至這個資料型別。
重要事項: |
|---|
當 Type 屬性設定為 Date,且目前日曆類型不為西曆時,驗證器僅執行伺服器端的驗證。驗證器用戶端指令碼僅支援西曆日曆。 |
下列表格列出可以比較的各種資料型別。
資料型別 | 說明 |
|---|
String | 字串資料型別。 |
Integer | 32 位元帶正負號的整數資料型別。 |
Double | 雙精度浮點數資料型別。 |
Date | 日期資料型別。 |
Currency | 可包含貨幣符號的十進位資料型別。 |
如需驗證控制項的詳細資訊,請參閱 BaseValidator。
可及性
根據預設為這個控制項呈現的標記,可能與可及性標準 (例如 Web 內容可及性方針 1.0 (WCAG) 優先權 1 方針) 不一致。如需這個控制項之可及性支援的詳細資料,請參閱 ASP.NET 控制項和網頁可及性。
在下列程式碼範例中,會示範如何使用 CompareValidator 控制項比較兩個 TextBox 控制項中的值。
安全性注意事項: |
|---|
這個範例有一個可接受使用者輸入的文字方塊,這可能會造成安全性威脅。根據預設,ASP.NET Web 網頁會驗證使用者輸入未包含指令碼或 HTML 項目。如需詳細資訊,請參閱 指令碼攻擊概觀。 |
<%@ Page Language="VB" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<title>CompareValidator Example</title>
<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)
Compare1.Validate()
End Sub
</script>
</head>
<body>
<form id="form1" runat="server">
<h3>CompareValidator Example</h3>
<br />
Enter a value in each textbox. Select a comparison operator<br />
and data type. Click "Validate" to compare values.
<table style="background-color:#eeeeee; padding:10">
<tr valign="top">
<td>
<h5>String 1:</h5>
<asp:TextBox id="TextBox1"
runat="server"/>
</td>
<td>
<h5>Comparison Operator:</h5>
<asp:ListBox id="ListOperator"
OnSelectedIndexChanged="Operator_Index_Changed"
runat="server">
<asp:ListItem Selected="True" 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: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="true" 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:ListItem Value="Currency" >Currency</asp:ListItem>
</asp:ListBox>
</td>
</tr>
</table>
<asp:CompareValidator id="Compare1"
ControlToValidate="TextBox1"
ControlToCompare="TextBox2"
EnableClientScript="False"
Type="String"
runat="server"/>
<br />
<asp:Label id="lblOutput"
Font-Names="verdana"
Font-Size="10pt"
runat="server"/>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<title>CompareValidator Example</title>
<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;
Compare1.Validate();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<h3>CompareValidator Example</h3>
<br />
Enter a value in each textbox. Select a comparison operator<br />
and data type. Click "Validate" to compare values.
<table style="background-color:#eeeeee; padding:10">
<tr valign="top">
<td>
<h5>String 1:</h5>
<asp:TextBox id="TextBox1"
runat="server"/>
</td>
<td>
<h5>Comparison Operator:</h5>
<asp:ListBox id="ListOperator"
OnSelectedIndexChanged="Operator_Index_Changed"
runat="server">
<asp:ListItem Selected="True" 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: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="true" 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:ListItem Value="Currency" >Currency</asp:ListItem>
</asp:ListBox>
</td>
</tr>
</table>
<asp:CompareValidator id="Compare1"
ControlToValidate="TextBox1"
ControlToCompare="TextBox2"
EnableClientScript="False"
Type="String"
runat="server"/>
<br />
<asp:Label id="lblOutput"
Font-Names="verdana"
Font-Size="10pt"
runat="server"/>
</form>
</body>
</html>
<%@ Page Language="JScript" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<title>CompareValidator Example</title>
<script runat="server">
function Button_Click(sender, e : EventArgs)
{
if (Page.IsValid)
{
lblOutput.Text = "Result: Valid!";
}
else
{
lblOutput.Text = "Result: Not valid!";
}
}
function Operator_Index_Changed(sender, e : EventArgs)
{
Compare1.Operator = ValidationCompareOperator(ListOperator.SelectedIndex);
Compare1.Validate();
}
function Type_Index_Changed(sender, e : EventArgs)
{
Compare1.Type = ValidationDataType(ListType.SelectedIndex);
Compare1.Validate();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<h3>CompareValidator Example</h3>
<br />
Enter a value in each textbox. Select a comparison operator<br />
and data type. Click "Validate" to compare values.
<table style="background-color:#eeeeee; padding:10">
<tr valign="top">
<td>
<h5>String 1:</h5>
<asp:TextBox id="TextBox1"
runat="server"/>
</td>
<td>
<h5>Comparison Operator:</h5>
<asp:ListBox id="ListOperator"
OnSelectedIndexChanged="Operator_Index_Changed"
runat="server">
<asp:ListItem Selected="true" 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: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="true" 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:ListItem Value="Currency" >Currency</asp:ListItem>
</asp:ListBox>
</td>
</tr>
</table>
<asp:CompareValidator id="Compare1"
ControlToValidate="TextBox1"
ControlToCompare="TextBox2"
EnableClientScript="False"
Type="String"
runat="server"/>
<br />
<asp:Label id="lblOutput"
Font-Name="verdana"
Font-Size="10pt"
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..::.CompareValidator
這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。並非所有的執行個體成員都是安全執行緒。
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
.NET Framework 和 .NET Compact Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱 .NET Framework 系統需求。
.NET Framework
支援版本:3.5、3.0、2.0、1.1、1.0
參考