Ошибка MetadataType в MVC3? - PullRequest
       10

Ошибка MetadataType в MVC3?

1 голос
/ 14 марта 2012

Я ломал голову над использованием класса MetadataType / buddy, чтобы атрибуты DisplayName / Display работали с моими классами Entity Framework в MVC3.На мой взгляд, если я использую @ 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; }
}

Если я затем использую Html-помощник, такой как LabelFor:

@Html.LabelFor(m => m.First().ProductName)

, я все равно просто получаю имя свойства в своем выводе.Даже если я сделаю это программным способом в пользовательском расширении HTML, я просто получу имя свойства, а не значение расширенного атрибута:

ModelMetadata.FromLambdaExpression(expression, html.ViewData).DisplayName

Буду признателен за любые идеи или помощь по этому вопросу.Я что-то упускаю здесь?

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Это не работает, потому что свойства являются частными в классе ProductMetadata.Измените его на

public class ProductMetadata
{
    [Display(Name = "It works!!!")]
    public object ProductName { get; set; }

    [Display(Name = "Discontinued Date")]
    public object DiscontinuedDate { get; set; }
}
0 голосов
/ 14 марта 2012

Попробуйте использовать DisplayNameAttribute

[DisplayName("Propertyname")]
public string PropertyName {get;set;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...