Данные Аннотации и Ресурсы не играют красиво - PullRequest
9 голосов
/ 16 марта 2010

Я использую аннотации данных в приложении MVC2 и немного разочаровываюсь при попытке использовать файловые ресурсы RESX для сообщений об ошибках.

Я пробовал следующее, но продолжаю получать исключение: «Аргумент атрибута должен быть выражением константы, выражением typeof или выражением создания массива типа параметра атрибута»

[Required(ErrorMessage = Resources.ErrorMessages.Required)]
[Required(ErrorMessageResourceName = Resources.ErrorMessages.Required,
          ErrorMessageResourceType = typeof(Resources.ErrorMessages)]

Я получаю это сообщение об ошибке, пока я не заменю ErrorMessageResourceName на «Обязательный» вместо Resources.ErrorMessages.Required.

Может кто-нибудь сказать мне, правильно ли я делаю?

1 Ответ

13 голосов
/ 16 марта 2010

Да, то, что вы делаете в конце, в основном правильно. ErrorMessageResourceName принимает то, что подразумевает имя, имя ресурса, а не сам ресурс.

Resources.ErrorMessages.Required указывает на фактическое (локализованное) сообщение об ошибке (ресурс). имя ресурса просто "Обязательный", а тип менеджера ресурсов (используется для ErrorMessageResourceType) - это класс, который содержит этот ресурс, в данном случае Resources.ErrorMessages класс.

Итак, ваша декларация должна выглядеть так:

[Required(ErrorMessageResourceType = typeof(Resources.ErrorMessages),
    ErrorMessageResourceName = "Required")]
public string Something { get; set; }
...