【发布时间】:2014-12-10 07:22:38
【问题描述】:
我有一个带有下一个 TextBox 的网页:
<asp:TextBox ID="txtSum" runat="server"></asp:TextBox>
和 compareValidator 来验证它:
<asp:CompareValidator ID="CompareValidator1" runat="server" Display="Dynamic" ControlToValidate="txtSum" ErrorMessage="less than 0" ValueToCompare="0" Type="Double" Operator="GreaterThan">
</asp:CompareValidator>
当我将页面的文化设置为俄语时,比较验证无法正常工作。
我发现原因是英文和俄文的格式编号不同。
我尝试将格式更改如下:
NumberFormatInfo format = CultureInfo.CreateSpecificCulture("en-US").NumberFormat;
Thread.CurrentThread.CurrentCulture.NumberFormat = format;
但它不起作用。在调试中,我看到文化的 NumberFormat 发生了变化,但在页面中我收到的消息小于 0。
我该如何解决?
【问题讨论】:
-
好吧,当您比较您的数值时,您不会将它们与特定文化的字符串表示形式进行比较。你比较他们的真实价值。这就是为什么,我不认为指定您的
CurrentCulture或不更改此验证。问题可能出在其他地方。 -
我看到英文 numberFormat.CurrencyDecimalSeparator 是“.” (点)在俄语中是“,”(逗号),所以我几乎可以肯定这就是原因。 (此外,当我将文化更改为希伯来语时,我没有问题,因为希伯来语的 NumberFormat 与英语相同。
标签: c# asp.net number-formatting cultureinfo comparevalidator