如何将值文本框类型=数字转换为十进制

How to convert value textbox type=number to decimal

我在 asp.net 网络表单中有一个文本框,属性 类型设置为数字,如下所示:

<asp:TextBox runat="server" ID="Price" placeholder="Price" Type="Number" step=".01" />

我很难将其值转换为小数,因为尽管使用小数分隔符,但我总是得到一个整数,例如:

1.23 至 123.00

您的问题出在您为转换传递的 CultureInfo 上,看起来小数的“it-IT”标准使用的是逗号而不是点。这是一个例子:

var x = "1,23";             
Console.WriteLine(Convert.ToDecimal(x, new CultureInfo("it-IT")));
        
var y = "1.23";
Console.WriteLine(Convert.ToDecimal(y, new CultureInfo("it-IT")));

对于使用指定 CultureInfo 的代码,您需要在转换时将点替换为逗号,或者完全删除 CultureInfo 规范并继续使用点。

此外,如果您要将其转换为在显示屏上显示价格标签,您也可以使用它:

Convert.ToDecimal("1,23").ToString("C", new CultureInfo("it-IT"))

这个是为了"it-IT" ","是小数点分隔符,当你发送1.1时会被当作"1,1",一般客户端UI客户端文化必须和服务器文化,如果你真的想解决这个问题。在十进制转换前替换“.”用逗号。像下面这样的东西。看不到任何解决方法。

string textFormat = Price.Text.Replace(".",",");
        decimal MyPrice = 
       Convert.ToDecimal(textFormat, CultureInfo.CreateSpecificCulture("it-IT"));
        Console.WriteLine(MyPrice);