模型十进制验证
本文关键字:验证 十进制 模型 | 更新日期: 2023-09-27 18:36:50
我正在使用MVC 4,EF和.NET 4.0。
我有一个具有以下字段的模型:
[Display(Name = "Price")]
[Required(ErrorMessage = "Required")]
[Range(0,100)]
public decimal Price{ get; set; }
我将其显示在视图的文本框中:
@Html.TextBoxFor(s => s.Price)
@Html.ValidationMessageFor(s => s.Price)
如果我在价格文本框中键入 0.3,则验证通过。但是,如果我键入 .3(或任何以小数开头的数字),客户端验证将失败,并显示错误"价格字段必须是数字"。
如何允许用户输入以小数开头的数字而不显示错误?
如果要
在decimal
中存储这样的值,则需要使用 M
后缀来创建十进制类型的文本。
decimal d = .3; // Won't compile
decimal d = .3M; // Will compile
这是因为.3
不是decimal
,而是double
。以下内容无需任何后缀即可编译:
double dbl = .3;
我相信
按照Jamie Dixon的建议将jQuery更新到最新版本可以解决问题。但是,我目前无法在我的应用程序中更新 jQuery。
作为解决方法,我添加了一个 Javascript 函数,该函数将前面的零添加到以小数开头的任何数字中。
$(document).ready(function () {
$('#Price').keydown(function () {
FixDecimal($('#Price'))
});
function FixDecimal(obj) {
var val = obj.val();
val = val.replace('$', '');
if (val.indexOf('.', 0) == 0) val = '0' + val;
obj.val(val);
}
});