ComponentModel Отображение ресурса по отражению - PullRequest
0 голосов
/ 09 июля 2011

Я локализую свое приложение asp.net Mvc.Строки помещаются в файлы ресурсов.Я украшаю свои модели с помощью атрибута System.ComponentModel.DataAnnotations.DisplayAttribute, например:

public class User
{
    public virtual Guid Id { get; set; }

    [Display(ResourceType = typeof(ModelRes.User), Name = "LogonName")]
    public virtual string LogonName { get; set; }
    [Display(ResourceType = typeof(ModelRes.User), Name = "Password")]
    public virtual string Password { get; set; }
}

У меня есть один файл ресурсов на модель (класс), и User.resx выглядит следующим образом:

LogonName | "Logon name"
Password  | "Password"

Теперь представьте, что для многих свойств вы поняли идею.Вместо этого я хотел бы сделать следующее:

[CustomDisplay(typeof(ModelRes.User))]
public class User
{
    public virtual Guid Id { get; set; }

    public virtual string LogonName { get; set; }
    public virtual string Password { get; set; }
}

и по-прежнему иметь возможность использовать это в моем (бритвенном) представлении:

@Html.LabelFor(m => m.LogonName)

Есть ли у вас опыт реализации чего-то подобного?

1 Ответ

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

Вам нужно будет написать пользовательский ModelMetadataProvider .

Затем вам нужно будет установить свойство DisplayName для переменной ModelMetadata, используя свой пользовательский атрибут и имя свойства.

Вот несколько примеров / руководств

Расположение службы ASP.NET MVC 3, часть 7. Метаданные модели

Настройка метаданных и проверки ASP.NET MVC 2

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