我有一个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
};
我也试过去;
[DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = true)]
在我的模特中。但这也不起作用。它没有效果。
在使用MVC时,我从未见过这样的行为。我不知道在哪里看。有线索吗?
答案 0 :(得分:1)
我仍然不知道问题是什么,但我用一点点的解决方法修复了它:
$.validator.methods.number = function (value, element) {
if(!isNaN(parseFloat(strValue)))
{
return true;
}
return false;
}
通过覆盖客户端十进制验证。刚刚在我的_layout.cshtml的脚本块中添加了它。
服务器端验证将通过完整验证确保安全性仍然正常。