0

我有一个带有下一个文本框的网页:

<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。

我该如何解决?

4

1 回答 1

0

您面临的问题是由于浏览器文化造成的。浏览器文化是俄语,您在 IIS 上执行的代码可能具有英语文化。总是浏览器文化正在过去。您需要使用不变的文化来解析双精度值或更改当前的 UI 文化,以便它能够正常工作。

protected override void InitializeCulture()
{
    Page.Culture = CultureInfo.CreateSpecificCulture("en-US");
    Page.UICulture = CultureInfo.CreateSpecificCulture("en-US");    
}
于 2014-12-10T07:52:48.933 回答