Установить тип ресурса по умолчанию для атрибутов модели в c # - PullRequest
2 голосов
/ 07 июля 2011

Я ищу более простой / более сухой способ использования ресурсов моих моделей MVC 3.

Вот как я это делаю сейчас (каждому атрибуту нужно указать, какой тип ресурса он использует):

    public class ContactMessageModel:BaseModel
    {
        [Display(Name="ReplyToEmail_DisplayName", ResourceType = typeof(Res.Views_Contact))]
        public string ReplyToEmail {get; set; }

        [Display(Name = "ContactReason_DisplayName", ResourceType = typeof(Res.Views_Contact))]
        public string ContactReason { get; set; }

Можно ли это сделать?

Вот как я хотел бы это сделать (я просто хочу один раз определить тип ресурса для модели):

[Display(ResourceType = typeof(Res.Views_Contact))]
public class ContactMessageModel:BaseModel
{
    [Display(Name="ReplyToEmail_DisplayName")]
    public string ReplyToEmail {get; set; }

    [Display(Name = "ContactReason_DisplayName")]            
    public string ContactReason { get; set; }

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Кажется невозможным, поскольку экземпляру атрибута потребуется доступ к свойству, на котором он находится, что не поддерживается в .NET.

0 голосов
/ 02 марта 2016

Да, по умолчанию ResourceType может быть сделано.Фил Хаак показывает пример того, как переопределить .NET ModelMetadataProviders для достижения этой цели и избежать необходимости повторять указание одного и того же ResourceType снова и снова:

http://haacked.com/archive/2011/07/14/model-metadata-and-validation-localization-using-conventions.aspx/

Вы можете по умолчанию использоватьодин ResourceType глобально или декорировать определенные классы по умолчанию, используя этот атрибут, который он определяет:

public class MetadataConventionsAttribute : Attribute
{
    public Type ResourceType { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...