2010-06-07 2 views
1

С ASP.NET MVC вы можете использовать аннотацию [Требуется (ErrorMessage = "Это необходимо")]данных аннотаций получение ErrorMessage из базы данных

Как я могу создать что-то вроде этого:

[ Обязательно (errormessage = "ERRORXX")]

Поэтому я могу найти в базе данных, что это за ERRORXX, и отобразить его на моей форме. Теперь моя форма отображает ERRORXX.

Как я могу создать что-то, что решает мою проблему?

Thx!

ответ

0

Я думаю, вы имеете в виду, что хотите читать/использовать объявления атрибутов для данного свойства?

Если это так, вы можете создать свой собственный класс RequiredAttribute (чтобы добавить новые или более подходящие свойства по вашему желанию). См.: Attributes Tutorial

+0

Могу ли я наследовать из класса requiredAttribute? – Masna

+0

Вордс, я думаю, я пропустил пункт вашего вопроса ... Извините. Хотя, нет, обычно вы не сможете расширить реализацию атрибута, поскольку по соглашению они помечены как запечатанные. – Reddog

+0

Свойства атрибутов должны быть фиксированными константами при их компиляции в библиотеку. Первая ссылка от @Leniel показывает, как я достиг бы того, чего вы хотите - через файлы ресурсов. – Reddog

3

Просто идея: почему бы не вытащить сообщения об ошибках из resx file? Я думаю, что это общий способ сделать это. Это даже позволяет легко локализовать сообщения об ошибках.

Я думаю, что с помощью файла ресурсов (файл resx) еще проще изменить сообщения об ошибках позже. Например, файл resx можно открыть и отредактировать в Word Pad. Вам не нужно, чтобы получить доступ к базе данных с именем пользователя/пароль, запрос его и т.д.

Localizing ASP.NET MVC Validation

Globalizing ASP.NET MVC Client Validation

Посмотрите здесь:

Model Validation & Metadata in ASP.NET MVC 2

Customizing ASP.NET MVC 2 - Metadata and Validation

1

Маршрут по умолчанию - это ресурсы. Однако я понимаю вашу боль :) То, как я это достиг, немного необычно, но я дам вам краткое изложение. В нашем проекте использование файлов ресурсов не является вариантом, поскольку он слишком ограничен для наших целей, подробности о которых я не буду вас утомлять сейчас! :) В этом базовом принципе мы устанавливаем свойство errorMessage атрибута validation на какой-то «ключ», а затем просто используем это как способ поиска правильного ответа (оттого) в нашей базе данных CMS, когда проверка не выполняется (в нашем случае с использованием MVC, когда мы обновляем модель и проверяем состояние - все на уровне контроллера).

Это тот же принцип, что и использование ресурсов (путем указания «ErrorMessageResourceName» и «ErrorMessageResourceType»), но вы можете делать с ним то, что хотите.

Чтобы быть ясным, мы изначально расширили RequiredAttribute (как один пример) нашими собственными вещами, включая ввод правильно названных аргументов, чтобы мы могли получить разумное значение CMS из базы данных позже. Чтобы быть более ясным, мы используем MVC и пользовательские HtmlHelpers для визуализации наших собственных ValidationControls, которые в конечном итоге потребляют пользовательские значения из наших пользовательских аннотаций и т. Д. Ничего из этого не влияет на принцип ошарашенности здесь, хотя это просто используйте «errorMessage» или что-то в этом роде, чтобы посмотреть фактическое сообщение, откуда вы хотите, и КОГДА вам захочется.

Смежные вопросы