客户端十进制验证无法正常工作

client side decimal validation isn't working as it should

提问人:middelpat 提问时间:4/22/2013 更新时间:4/25/2013 访问量:775

问:

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

十进制验证只允许小数点分隔符后有三个数字的数字。但是,我希望它适用于分隔符之后的两个数字(或者任何数字都可以,如果我是正确的,默认情况下应该这样做)。

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

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

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

我的模型:

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

和我的控制器:

ProductVM model = new ProductVM()
{
    BasePrice = product.BasePrice
};
  • product 是 Entity Framework 4 entityobject

我也试过推杆;

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

在我的模型中。但这也行不通。它没有效果。

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

asp.net-mvc 验证 视图 unobtrusive-javascript

评论


答:

1赞 middelpat 4/25/2013 #1

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

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

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

    return false;

}

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

服务器端验证将通过完整验证来确保安全性仍然正常。