这是我的模型中的 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。这里有什么问题?
您的问题源于 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");