使用jQuery Validator在MVC 3中未正确验证Decimal

Ces*_*sar 9 asp.net-mvc jquery jquery-validate asp.net-mvc-3

我有一个像这样的属性public decimal? MyProperty { get; set; },它不是必需的并且可以为空,但如果我没有放置一个值> 0,验证器说MyProperty字段必须是一个数字,如果我将该字段留空我收到相同的错误,如果我把0(零)我收到同样的错误.

Ex:
0 -> Error
1 -> Ok
0,00 -> Error
0,01 -> Ok
empty -> Error
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这不起作用,我使用$.preferCulture("pt-BR");但没有意义,因为价值0,01被接受,我不相信文化可能是问题.

PS:验证在客户端不起作用,服务器端正常工作.

Zot*_*ote 10

默认号码功能有一个错误.它的测试parseFloat(value) == 0和parseFloat为'0'返回0.

为了解决这个问题,我已将其覆盖为

$.validator.methods.number = function (value, element) {
  return parseFloat(value).toString() !== "NaN";
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是最好的方法,但这种解决方法解决了我的问题.