Сбой атрибута валидатора регулярных выражений в аннотациях данных MVC3 - PullRequest
0 голосов
/ 05 августа 2011

Одна из моих моделей представлений имеет свойство GramWeight, определенное как

    [Display(Name="Gram Weight")]
    [RegularExpression(@"[0-9]*\.?[0-9]+", ErrorMessage = "Gram Weight must be a Number.")]
    [Range(0, 9999.99, ErrorMessage = "Value must be between 0 - 9,999.99")]
    public decimal? GramWeight { get; set; }

Проверка этого поля завершается неудачно, когда пользователь вводит значение с ведущей десятичной точкой, например, .23, а не0,23.Если пользователь добавляет 0 вперед, проверка проходит.Я предполагал, что это было проблемой с моим регулярным выражением, но я выполнил некоторые тесты на этом http://regexhero.net/tester/, и это, кажется, работает просто отлично.

Итак, если это не регулярное выражение, это что-то еще?Я почти готов использовать javascript, чтобы добавить 0 для пользователя, если он этого не сделает.Это мой последний вариант, но я обдумываю это.

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Это потому, что это десятичный тип, вы пытались изменить GramWeight на строку, чтобы просто посмотреть, что в этом случае делает валидатор?

0 голосов
/ 09 января 2013

Для тех, кому нужно лучшее решение, здесь есть правильное регулярное выражение для проверки десятичных чисел:

[RegularExpression(@"[-+]?[0-9]*\.?[0-9]?[0-9]")]

Это регулярное выражение требует числа (ноль в вашем случае) перед знаком точки и допускает максимум 2 десятичных знака.

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