Маршрут по умолчанию - это ресурсы. Однако я понимаю вашу боль :) То, как я это достиг, немного необычно, но я дам вам краткое изложение. В нашем проекте использование файлов ресурсов не является вариантом, поскольку он слишком ограничен для наших целей, подробности о которых я не буду вас утомлять сейчас! :) В этом базовом принципе мы устанавливаем свойство errorMessage атрибута validation на какой-то «ключ», а затем просто используем это как способ поиска правильного ответа (оттого) в нашей базе данных CMS, когда проверка не выполняется (в нашем случае с использованием MVC, когда мы обновляем модель и проверяем состояние - все на уровне контроллера).
Это тот же принцип, что и использование ресурсов (путем указания «ErrorMessageResourceName» и «ErrorMessageResourceType»), но вы можете делать с ним то, что хотите.
Чтобы быть ясным, мы изначально расширили RequiredAttribute (как один пример) нашими собственными вещами, включая ввод правильно названных аргументов, чтобы мы могли получить разумное значение CMS из базы данных позже. Чтобы быть более ясным, мы используем MVC и пользовательские HtmlHelpers для визуализации наших собственных ValidationControls, которые в конечном итоге потребляют пользовательские значения из наших пользовательских аннотаций и т. Д. Ничего из этого не влияет на принцип ошарашенности здесь, хотя это просто используйте «errorMessage» или что-то в этом роде, чтобы посмотреть фактическое сообщение, откуда вы хотите, и КОГДА вам захочется.
Могу ли я наследовать из класса requiredAttribute? – Masna
Вордс, я думаю, я пропустил пункт вашего вопроса ... Извините. Хотя, нет, обычно вы не сможете расширить реализацию атрибута, поскольку по соглашению они помечены как запечатанные. – Reddog
Свойства атрибутов должны быть фиксированными константами при их компиляции в библиотеку. Первая ссылка от @Leniel показывает, как я достиг бы того, чего вы хотите - через файлы ресурсов. – Reddog