Я использую dataannotations в приложении MVC2 и немного обескуражен при попытке использовать ресурсы файла RESX для сообщений об ошибках.
Я попробовал следующее, но продолжаю добираться, исключением "Аргумент атрибута должно быть константное выражение, typeof выражение или выражение создания массива типа параметра атрибута"
[Required(ErrorMessage = Resources.ErrorMessages.Required)]
[Required(ErrorMessageResourceName = Resources.ErrorMessages.Required,
ErrorMessageResourceType = typeof(Resources.ErrorMessages)]
Я продолжаю получать то сообщение об ошибке, если я не заменяю ErrorMessageResourceName
с "Необходимым" вместо Resources.ErrorMessages.Required
.
Кто-либо может сказать мне, если я делаю это правильно?
Да, то, что вы делаете в конце, в основном правильно. ErrorMessageResourceName
принимает то, что подразумевает имя, имя ресурса, а не сам ресурс.
Resources.ErrorMessages.Required
указывает на фактическое (локализованное) сообщение об ошибке (ресурс). имя ресурса просто «Требуется», а тип диспетчера ресурсов (используемый для ErrorMessageResourceType
) - это класс, который содержит этот ресурс в в данном случае это класс Resources.ErrorMessages
.
Итак, ваше объявление должно выглядеть так:
[Required(ErrorMessageResourceType = typeof(Resources.ErrorMessages),
ErrorMessageResourceName = "Required")]
public string Something { get; set; }