MVC LabelFor用CamelCase替换下划线

时间:2011-07-09 20:12:26

标签: c# asp.net-mvc razor

我的数据库模型在字段名称中的列名称为“_”。 有没有办法在表单中显示时在Camel Case中显示这些值?喜欢 “BUSINESSNAME”

我正在使用带有Razor的asp.net MVC3

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

3 个答案:

答案 0 :(得分:5)

你能不能只使用DisplayAttribute

答案 1 :(得分:5)

你需要一个新的metadataprovider,它可以从默认的继承,如下所示:

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的实现,以便在给定属性名称的情况下提供正确的显示名称

答案 2 :(得分:1)

为什么不使用@ Html.Label(“商家名称”)?