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

Posted

技术标签:

【中文标题】使用 jQuery Validator 在 MVC 3 中未正确验证小数【英文标题】:Decimal is not validated correctly in MVC 3 with jQuery Validator 【发布时间】:2011-07-13 16:31:56 【问题描述】:

我有一个像public decimal? MyProperty get; set; 这样的属性,它不是必需的并且可以为空,但如果我没有输入值> 0,验证器会说如果我离开该字段,MyProperty 字段必须是一个数字empty 我收到同样的错误,如果我输入 0(零),我也会收到同样的错误。

Ex:
0 -> Error
1 -> Ok
0,00 -> Error
0,01 -> Ok
empty -> Error

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

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

【问题讨论】:

【参考方案1】:

默认号码功能有错误。它测试 parseFloat(value) == 0 和 parseFloat for '0' 返回 0。

为了解决这个问题,我把它改写为

$.validator.methods.number = function (value, element) 
  return parseFloat(value).toString() !== "NaN";

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

【讨论】:

我发现了这个,它很有帮助,但它可能还应该注意到 MVC 没有为你的代码包含验证器代码,你必须自己做。

以上是关于使用 jQuery Validator 在 MVC 3 中未正确验证小数的主要内容,如果未能解决你的问题,请参考以下文章

关于spring MVC中加载多个validator的方法。

MVC中 jquery.validate取消忽略对hidden的验证

spring4 mvc 中使用 JSR-303 Validator ,国际化占位符问题至资源配置问题

覆盖spring web mvc的默认Hibernate Validator

jquery-validator 的使用方法

使用 jquery 验证验证 2 个表单