我使用MetadataType / buddy类破解了我的大脑,以获取在MVC3中我的Entity Framework类上工作的DisplayName / Display属性。在我看来,如果我使用@ Html.LabelFor,我仍然只获取属性名称而不是display属性。我的用例和设置非常简单:
[MetadataType(typeof(ProductMetadata))]
public partial class Product
{
}
public class ProductMetadata
{
[Display(Name = "Why does this not work????")]
object ProductName { get; set; }
[Display(Name = "Discontinued Date")]
object DiscontinuedDate { get; set; }
}
如果我然后使用像LabelFor这样的Html助手:
@Html.LabelFor(m => m.First().ProductName)
我仍然只是在输出中获取属性名称。即使我在自定义Html扩展中以编程方式执行此操作,我只获取属性名称而不是扩展属性值:
ModelMetadata.FromLambdaExpression(expression, html.ViewData).DisplayName
对此有任何想法或帮助将不胜感激。我在这里缺少什么吗?
答案 0 :(得分:1)
它不起作用,因为属性在ProductMetadata类中是私有的。将其更改为
public class ProductMetadata
{
[Display(Name = "It works!!!")]
public object ProductName { get; set; }
[Display(Name = "Discontinued Date")]
public object DiscontinuedDate { get; set; }
}
答案 1 :(得分:0)
尝试使用DisplayNameAttribute
[DisplayName("Propertyname")]
public string PropertyName {get;set;}