DataAnnotations Автоматическая обработка int вызывает препятствия - PullRequest
2 голосов
/ 02 июня 2010

Резюме: DataAnnotation - автоматическая обработка int? заставляет меня переосмысливать их использование.

Может быть, я что-то упустил и легко исправить, но не могу заставить DataAnnotations сотрудничать. У меня есть публичное свойство с моим собственным атрибутом проверки:

[MustBeNumeric(ErrorMessage = "Must be a number")]
public int? Weight { get; set; }

Смысл пользовательского атрибута проверки - быстро проверить, является ли ввод числовым, и отобразить соответствующее сообщение об ошибке. Проблема в том, что когда DataAnnotations пытается привязать строку к int? автоматически не проверяется и отображает «Значение asdf» недопустимо для веса.

Из-за жизни я не могу заставить DataAnnotations перестать обрабатывать это, поэтому я могу позаботиться об этом в своем настраиваемом атрибуте.

Похоже, это будет популярный сценарий (для проверки ввода в числовом формате), и я предполагаю, что есть простое решение, но я его нигде не нашел.

1 Ответ

0 голосов
/ 02 июня 2010

Вот обходной путь (поскольку я бы не назвал это решением). Добавьте файл Messages.resx в папку App_GlobalResources вашего веб-приложения. Добавьте следующий ресурс внутрь:

Key: PropertyValueInvalid
Value: {0} Must be a number

В методе Application_Start для Global.asax добавить следующее:

DefaultModelBinder.ResourceClassKey = "Messages";
...