ErrorMessageResourceType устанавливается через метод - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь изменить свой DTO с чего-то вроде этого:

            [Required]
            [Display(Name = "Name")]
            [MaxLength(100, ErrorMessage = "error msg")]
            [DisplayFormat(ConvertEmptyStringToNull = false)]
            public string Name { get; set; }

на что-то вроде этого, используя ресурсы:

            [Required]
            [Display(Name = ResourcesKeys.Name, ResourceType = typeof(res))]
            [MaxLength(100, ErrorMessageResourceName = ResourcesKeys.NameFieldTooLongErrorMsg, ErrorMessageResourceType = typeof(res))]
            [DisplayFormat(ConvertEmptyStringToNull = false)]
            public string Name { get; set; }

, где res - этомой файл ресурсов.В приложении будет много файлов ресурсов.Пока это работает нормально, но я хотел бы знать, есть ли какой-либо способ достичь того же результата, но путем отправки типа ресурса другим методом.

Я хотел бы иметь класс:

public static class ResourcesKeys
    {
        public const string Name  = "name";
        public const string NameFieldTooLongErrorMsg = "nameFieldTooLongErrorMsg";


        public static Type ReturnResourceType() 
        {
            return typeof(res); 
        }
}

, который помог бы мне достичь:

[MaxLength(100, ErrorMessageResourceName = ResourcesKeys.NameFieldTooLongErrorMsg, ErrorMessageResourceType = ResourceKeys.ReturnResoureType())]

Теперь, когда я пытаюсь это сделать, строкаподчеркнуто, и ошибка говорит:

Аргумент атрибута должен быть выражением константы, выражением typeof или выражением создания массива типа параметра атрибута.

И я понимаю,ты не можешь сделать это так.Я попытался изменить его на

 [MaxLength(100, ErrorMessageResourceName = ResourcesKeys.NameFieldTooLongErrorMsg, ErrorMessageResourceType = typeof(ResourceKeys.ReturnResoureType()))] 

, и сообщение на этот раз выглядит следующим образом:

Имя типа ReturnResourceType не существует в типе ResourceKeys.

и это совершенно понятно.ReturnResourceType () - это не тип, а метод.Я понялЧего я не понимаю, так это какого-нибудь способа заставить это работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...