2010-04-16 5 views
0

У меня есть интерфейс и классыASP.NET MVC DisplayAttribute и интерфейсы

public inteface IRole 
{ 
    int Id { get; } 
    string Name { get; set; } 
} 

public class Role : IRole 
{ 
    public int Id { get; } 
    [Display("Role Name")] 
    public string Name { get; set; } 
} 

public class Member 
{ 
    [Display("Login")] 
    public string Login { get; set; } 
    [Display("Password")] 
    public string Password { get; set; } 
    public IRole Role { get; set; } 
} 

на View Я пытаюсь использовать, Вид сильно тип члена

на этой линии отображает правильное сообщение от DisplayAttribute

<%= Html.LabelFor(m => m.Login) %> 

на этой строке не отображается правильный ярлык от DisplayAttribute

<%= Html.LabelFor(m => m.Role.Name) %> 

Как исправить это, чтобы иметь правильные метки в такой архитектуре?

P.S. Я знаю о добавлении DisplayAttribute в поле интерфейса, и все будет работать, но, возможно, есть другое решение.

ответ

1

Все работает как здесь.

Вы уже знаете свой ответ. Если вы отобразите форму для IRole, вы также должны иметь атрибуты на IRole.


Для того, чтобы иметь правильные ярлыки вы должны реализовать свои собственные TypeDescriptors или ModelMetadataProvider для того, чтобы «smush» вместе метаданных для интерфейса в какие-либо конкретные классы, которые реализуют их.

Это станет действительно сложным.

Почему вы не можете добавить атрибут к интерфейсу IRole?

Смежные вопросы