我有一些界面和类
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; }
}
on View我尝试使用,View是强类型的成员
此行上的显示来自DisplayAttribute
的正确消息<%= Html.LabelFor(m => m.Login) %>
在此行上,它不会显示DisplayAttribute
中的正确标签<%= Html.LabelFor(m => m.Role.Name) %>
如何解决此问题,以便在此类架构中使用正确的标签?
由于
P.S。我知道将DisplayAttribute添加到接口字段并且一切都可以工作,但也许有不同的解决方案。
答案 0 :(得分:1)
一切都按照这里设计的方式运作。
你已经知道答案了。如果您显示IRole的表单,则还必须具有IRole上的属性。
为了获得正确的标签,您必须实现自己的TypeDescriptors或ModelMetadataProvider,以便将接口的元数据“刷新”到任何实现它们的具体类中。
这将真正变得非常复杂。
为什么不能将属性添加到IRole接口?