Win 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”之类的值。(不带引号)值不带小数。这是正常现象吗?
是的,这是预期的行为,因为您在此处使用Attribute:运算符,因此首先将尝试尝试将输入到textBox中的值隐式转换为Type
您定义的值。即Double
在这里。因此,我想5.
成功地将其转换为双精度值。
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
一个整数,始终是隐式转换到任何的:long
,float
,double
,或decimal
。这是因为它是从较小数据类型到较大数据类型的转换,并且没有数据丢失。请参阅此MSDN链接。
另外,当您声明:
Double d = 5;
或者
Double d = Convert.ToDouble("5.");
检查d
in调试器中的值。它显示为:5.0
。因此,您现在可以猜测使用5实际上会解释为5.0,从而验证通过。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句