DataAnnotations в ASP.NET MVC 2 - Остановить MVC от применения RequiredAttribute для ненулевых свойств DateTime и т. Д. - PullRequest
5 голосов
/ 22 марта 2010

Я пытаюсь создать собственную версию RequiredAttribute, чтобы заменить встроенную, и у меня она работает для свойств, которые имеют строковые значения, но со свойствами, например DateTime или integer, по умолчанию RequiredAttribute выглядит так: применяется автоматически (ЕСЛИ свойство не обнуляется!)

Моя проблема в том, что я хочу иметь возможность указывать свойство DateTime, как требуется, используя мой пользовательский обязательный валидатор, который получает сообщение об ошибке из файла ресурсов (я не хочу указывать RequiredAttribute тип ресурса файл и ключ каждый раз, когда я его применяю. Вот почему я делаю свой.)

Как я могу предотвратить применение платформой обязательного атрибута к свойствам типа DateTime и int и т. Д. без изменения их в nullable.

Спасибо

Ответы [ 3 ]

10 голосов
/ 22 марта 2010

Нашли это!Я поместил это в файл Global.asax.cs

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

Класс DataAnnotationsModelValidatorProvider имеет статическое свойство с именем «AddImplicitRequiredAttributeForValueTypes», которое по умолчанию должно быть истинным, и установка его в «ложь» устраняет проблему.

(Для тех, кто пытается сделать то же самое, что находит эту запись, я документирую ее здесь )

1 голос
/ 14 июля 2010
1 голос
/ 08 апреля 2010

У меня установлен RTM, и у меня нет свойства AddImplicitRequiredAttributeForValueTypes ...

...