Десятичное число не проверено правильно в MVC 3 с jQuery Validator - PullRequest
9 голосов
/ 11 марта 2011

У меня есть свойство, подобное этому public decimal? MyProperty { get; set; }, оно НЕ является обязательным и обнуляемым, но если я не введу значение > 0, валидатор скажет, что поле MyProperty должно быть числом, если я покину полепусто Я получаю ту же ошибку, и если я ставлю 0 (ноль), я получаю ту же ошибку.

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

Я не понимаю, почему это не работает, я использую $.preferCulture("pt-BR");но не имеет смысла, потому что значение 0,01 принято, чем я не верю, что культура может быть проблемой.

PS: проверка не работает на стороне клиента , серверная часть работает корректно.

1 Ответ

10 голосов
/ 15 марта 2011

Функция номера по умолчанию содержит ошибку.Он проверяет parseFloat(value) == 0, а parseFloat для '0' возвращает 0.

Чтобы решить эту проблему, я переписал его как

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

Я знаю, что это не лучший способ, но этоОбходной путь решает мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...