将C#Web应用程序更改为西班牙语时,计算不起作用



我正在使用Web应用程序,我必须更改我的应用程序以支持西班牙语(用英语(。现在计算无法正确进行。

为了在计算中显示问题,我制作了另一个Web应用程序,并将其当前文化设置为" ES-E"。我有一个文本框及其文本,我将硬编码为40.00,如以下内容:

<asp:TextBox ID="txtNumber" Text="40.00" runat="server"  ></asp:TextBox>

当我尝试转换时,我会面临问题:

Convert.ToDecimal(txtNumber.Text);    //4000
decimal.Parse(txtNumber.Text, CultureInfo.InvariantCulture);   //40,00

这不是我所期望的。DECIMAL.PARSE是正确的,但我想要(。(而不是((。对于大型应用程序,更改所有控制的痛苦也是因为我曾经使用过

<ajaxtoolkit:filteredtextboxextender id="FilteredTextBoxExtender1" runat="server" targetcontrolid="txtNumber" filtertype="Custom, Numbers" validchars="." />

许多地方。如您所见,它将仅允许(。(而不是((,因此用户将无法输入十进制数字。是否可以在英语文化中进行所有计算并在西班牙语中显示应用?

您可以尝试更改当前线程的小数分离器。

Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";
Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator = ".";

最新更新