我无法正确发送 Decimal 变量(带有“.”或“,”)

问题描述 投票:0回答:1

这是我的模型中的 DiscountRate 变量。

 public decimal DiscountRate { get; set; }

这是我在视图中的输入。

 @Html.TextBoxFor(x=>x.DiscountRate, new {  @class = "form-control", @type = "number", step = "0.01", @placeholder = "0.00", @min="0", @max="100" })

问题是当我输入一个值(2,50或2.50等)时,我在控制器中捕获它,例如250。这里有什么问题?

c# asp.net asp.net-mvc asp.net-core decimal
1个回答
0
投票

您的问题源于 HTML5

type="number"
输入无法在不同的浏览器和文化设置中正确处理点
.
和逗号
,
。因此,当您输入
2,50
2.50
时,它会作为
250
发送到服务器。

要解决此问题,请将输入类型更改为

text
并在服务器端处理验证:

@Html.TextBoxFor(x => x.DiscountRate, new { @class = "form-control", @placeholder = "0.00" })

此外,请确保应用程序的区域性设置配置正确:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
© www.soinside.com 2019 - 2024. All rights reserved.