0

我有一个带有不显眼的 javascript 客户端验证的 MVC4 应用程序。除了十进制验证外,这工作正常。我遇到了一些奇怪而烦人的行为。

小数验证仅允许在小数分隔符后包含三个数字的数字。但是我希望它可以在分隔符之后使用两个数字(或者任何数字都可以,如果我是正确的,默认情况下它应该这样做)。

所以 1.222 是有效的,而 1.22 是无效的,而我不希望它是有效的。(1.2222 均无效)。

在我看来,我有一个正常的:

@Html.TextBoxFor(x => x.BasePrice)

我的模型:

[Required]
public decimal BasePrice { get; set; }

和我的控制器:

ProductVM model = new ProductVM()
{
    BasePrice = product.BasePrice
};
  • 产品是一个实体框架 4 实体对象

我也试过放;

[DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = true)]

在我的模型中。但这也不起作用。它没有效果。

在使用 MVC 时,我从未见过这样的行为。我不知道在哪里看。有什么线索吗?

4

1 回答 1

1

我仍然不知道问题是什么,但我用一些肮脏的解决方法修复了它:

$.validator.methods.number = function (value, element) {

    if(!isNaN(parseFloat(strValue)))
    {
        return true;
    }   

    return false;

}

通过覆盖客户端十进制验证。刚刚在我的 _layout.cshtml 的脚本块中添加了这个。

服务器端验证将通过完整验证确保安全性仍然可以。

于 2013-04-24T16:11:53.500 回答