如何改变当前文化asp.net的双重格式

时间:2014-12-10 07:22:39

标签: c# asp.net number-formatting cultureinfo comparevalidator

我有一个包含下一个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.

我该如何解决?

1 个答案:

答案 0 :(得分:0)

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

protected override void InitializeCulture()
{
    Page.Culture = CultureInfo.CreateSpecificCulture("en-US");
    Page.UICulture = CultureInfo.CreateSpecificCulture("en-US");    
}