MVC LabelFor для замены подчеркивания на CamelCase - PullRequest
4 голосов
/ 10 июля 2011

моя модель БД имеет имя столбца с «_» в имени поля.Есть ли способ отменить эти значения в случае верблюда при отображении в форме?как "BusinessName"

я использую asp.net MVC3 с Razor

@Html.LabelFor(model => model.business_name)

Ответы [ 3 ]

5 голосов
/ 11 июля 2011

Вам нужен новый метаданный провайдер, который может наследовать от используемого по умолчанию, например:

using System;
using System.Web.Mvc;
using System.Collections.Generic;

public class MyMetadataProvider : DataAnnotationsModelMetadataProvider
{
    protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
    {
        var metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);

        if (metadata.DisplayName == null)
            metadata.DisplayName = GetDisplayNameFromDBName(propertyName);

        return metadata;
    }

    private string GetDisplayNameFromDBName(string propertyName)
    {
        return ...;
    }
}

Зарегистрируйте его в global.asax следующим образом:

ModelMetadataProviders.Current = new MyMetadataProvider();

Вам просто нужно предоставитьреализация GetDisplayNameFromDBName для предоставления правильного отображаемого имени с именем свойства

5 голосов
/ 10 июля 2011

Не могли бы вы просто использовать DisplayAttribute ?

1 голос
/ 11 июля 2011

Почему бы вам просто не использовать @ Html.Label ("Название компании")?

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