Могу ли я добавить атрибут отображаемого имени на лету, если он не указан в MVC3? - PullRequest
0 голосов
/ 19 августа 2011

Я думал, что было бы очень здорово, если бы я мог подключить что-то, что добавляло бы атрибут отображаемого имени на лету к любому свойству модели, у которого его еще не было.Идея заключается в том, что если бы у меня было свойство с именем FirstName, я мог бы просто наклонить его и сделать его «Имя»

MVC, похоже, имеет модель провайдера для всего.Могу ли я использовать что-нибудь для этого?

Ответы [ 3 ]

3 голосов
/ 19 августа 2011

Это просто расширенная версия ответа Дуга

public class MyModelMetadataProvider : DataAnnotationsModelMetadataProvider
{
    public override ModelMetadata GetMetadataForProperty(Func<object> modelAccessor, Type containerType, string propertyName)
    {
        var result = base.GetMetadataForProperty(modelAccessor, containerType, propertyName);
        if (result.DisplayName.IsEmpty()) result.DisplayName = propertyName.InflectTo().Titleized;
        return result;
    }
}

и зарегистрируйте его в mvc в глобальном asax, например, так:

ModelMetadataProviders.Current = new MyModelMetadataProvider();
1 голос
/ 19 августа 2011

Да, вы можете сделать это. Вам просто нужно создать свой собственный ModelMetaDataprovider и переопределить DisplayName.

0 голосов
/ 19 августа 2011

Вы можете использовать атрибут [DisplayName] для достижения цели Свойство For, если вы хотите использовать его для модели, затем GoFor MOdelMetaDataProvider

ModelMetaDataProvider Документы MSDN

Пример учебника для ModelMetaDataProvider

Другой пример для ModelMetaDataProvider

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...