4.4 比较验证控件:CompareValidator
CompareValidator验证控件可以把控件中的值同另外一个固定的值或者控件里的值进行比较。它有四个非常重要的属性:Type、ControlToCompare、ValueToCompare和Operator属性。
其中,Type属性与RangeValidator验证控件的Type属性一样,如表4-3所示,用来指定要比较值的数据类型;ControlToCompare属性用来将特定的输入控件的值与另一个输入控件的值进行比较;ValueToCompare属性可以将一个输入控件的值同某个常数值相比较,而不是比较两个输入控件的值;Operator属性允许你指定要执行的比较类型,如大于、等于等,如表4-4所示。如果将Operator属性设置为DataTypeCheck,则CompareValidator验证控件将忽略ControlToCompare和ValueToCompare属性,并且只表明输入控件中输入的值是否可以转换为Type属性指定的数据类型。
注意 在一般情况下,ValueToCompare和ControlToCompare属性只能够选择其中一个。如果同时设置了ValueToCompare和ControlToCompare属性,则ControlToCompare属性的优先级高于ValueToCompare属性的优先级。
下面的代码示例演示如何使用CompareValidator验证控件来比较一个输入控件的值和一个常数值,以确保控件输入的值小于或者等于20,如代码清单4-3所示。
代码清单4-3 TestCompareValidator.aspx
<form id="form1"runat="server">
<div>
<asp:TextBox ID="TextBox1"runat="server"></asp:TextBox>
<asp:CompareValidator
ID="CompareValidator1"
ControlToValidate="TextBox1"
ValueToCompare="20"
Type="Integer"
Operator="LessThanEqual"
Text="你输入的数必须小于或者等于20"
runat="server">
</asp:CompareValidator>
<asp:Button ID="Button1"runat="server"Text="数据提交"/>
</div>
</form>
程序运行结果如图4-6所示,因为将验证控件CompareValidator1的ValueToCompare属性设置为常数值20,并将Operator属性设置为Less ThanEqual(即小于或者等于20)。所以当在文本框里面输入90时,则不满足上面的条件,因而输出提示信息。
图 4-6 TestCompareValidator.aspx运行结果
上面演示了比较一个输入控件的值和一个常数值的例子,下面再来看一个比较两个输入控件的值的例子。并要求第一个控件的值必须小于或者等于第二个控件的值,即TextBox1的值必须小于或者等于TextBox2的值,如代码清单4-4所示。
代码清单4-4 TestCompareValidator1.aspx
<form id="form1"runat="server">
<div>
TextBox1:<asp:TextBox ID="TextBox1"
runat="server"></asp:TextBox>
<br/>
TextBox2:<asp:TextBox ID="TextBox2"
runat="server"></asp:TextBox>
<br/>
<asp:CompareValidator
ID="CompareValidator1"
ControlToValidate="TextBox1"
ControlToCompare="TextBox2"
Type="Integer"
Operator="LessThanEqual"
Text="TextBox1的值必须小于或者等于TextBox2的值"
runat="server">
</asp:CompareValidator>
<br/>
<asp:Button ID="Button1"runat="server"Text="数据提交"/>
</div>
</form>
代码清单4-4与代码清单4-3唯一不同的是,将ValueToCompare属性变成了ControlTo Compare属性,并在ControlToCompare属性里面设置要比较的输入控件ID。程序的运行结果如图4-7所示。
图 4-7 TestCompareValidator1.aspx运行结果