0

我正在使用 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,验证通过。但是,如果我输入 0.3(或任何以小数开头的数字),客户端验证将失败并出现错误“价格字段必须是数字”。被展示。

如何允许用户输入以小数开头的数字而不显示错误?

4

2 回答 2

1

如果您想在 a 中存储这样的值,decimal您需要使用M后缀来创建十进制类型的文字。

decimal d = .3; // Won't compile

decimal d = .3M; // Will compile

这是因为.3不是a decimal,而是a double。以下内容无需任何后缀即可编译:

double dbl = .3;

于 2013-10-24T19:09:04.637 回答
0

I believe updating jQuery to the latest version as Jamie Dixon suggested would fix the problem. However, I am not able to update jQuery in my application at this time.

As a work around, I added a Javascript function that adds a preceding zero to any number beginning with a decimal.

 $(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);
     }
  });
于 2013-10-25T18:49:04.127 回答