asp net comparevalidator类型double datatypecheck允许不正确的值

时间:2013-09-10 05:11:15

标签: asp.net validation compare double

赢得7上的ASP NET 4.0

如果我实现这样的CompareValidator:

<asp:CompareValidator ID="cmprValidatorDoubleType" ControlToValidate="TextBox10" Type="Double" Display="Dynamic" Operator="DataTypeCheck" ErrorMessage="*Not a valid number." runat="server"></asp:CompareValidator>

它会接受诸如“5”之类的值。 (不带引号)值不带小数。这是正常的和预期的行为吗?

1 个答案:

答案 0 :(得分:2)

是的,这是预期的行为,因为您在此处使用属性: Operator ,因此首先尝试转换为输入到textBox中的值隐式进入你定义的Type。即Double。所以,我想,5.成功转换为double值。

MSDN对CompareValidator的 OPERATOR 属性说:

 A data type comparison of the value entered in the input control being validated and
 the data type specified by the BaseCompareValidator.Type property. Validation fails 
 if the value cannot be converted to the specified data

整数始终为 implicitly convertible 以下任意一项:longfloatdouble或{ {1}}。这是因为它是从较小的数据类型到较大的数据类型的转换,并且没有数据丢失。请参阅此MSDN link

另外,当您声明:

decimal

OR

Double d = 5;

检查调试器中Double d = Convert.ToDouble("5."); 的值。它显示为:d。 因此,您现在可以猜测使用5实际上被解释为5.0,因此验证通过了。