我正在使用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)
如果我在Price文本框中键入0.3,则验证通过。但是,如果我输入.3 in(或任何以小数开头的数字),则客户端验证失败并且错误"字段Price必须是数字。"显示。
如何允许用户输入以小数开头且不显示错误的数字?
答案 0 :(得分:1)
如果要在decimal
中存储这样的值,则需要使用M
后缀来创建小数类型的文字。
decimal d = .3; // Won't compile
decimal d = .3M; // Will compile
这是因为.3
不是decimal
,而是double
。以下将编译而不需要任何后缀:
double dbl = .3;
答案 1 :(得分:0)
我相信将jQuery更新到最新版本,因为Jamie Dixon建议可以解决问题。但是,我目前无法在我的应用程序中更新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);
}
});