MVC3中的MetadataType错误?

时间:2012-03-14 16:02:53

标签: asp.net-mvc asp.net-mvc-3

我使用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

对此有任何想法或帮助将不胜感激。我在这里缺少什么吗?

2 个答案:

答案 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;}