将 C# Web 应用程序更改为西班牙语时,计算不起作用
When changing C# web application to spanish, calculation is not working
我正在开发一个 Web 应用程序,我必须更改我的应用程序以支持西班牙语(它是英语)。现在计算不正确。
为了显示计算中的问题,我制作了另一个 Web 应用程序并将其当前文化设置为 "es-ES"。我有一个文本框,它的文本已硬编码为 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 = ".";
我正在开发一个 Web 应用程序,我必须更改我的应用程序以支持西班牙语(它是英语)。现在计算不正确。
为了显示计算中的问题,我制作了另一个 Web 应用程序并将其当前文化设置为 "es-ES"。我有一个文本框,它的文本已硬编码为 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 = ".";