my DBモデルのフィールド名に "_"を含む列名があります。 フォームに表示するときにCamel Caseにこれらの値を表示する方法はありますか?以下のような私はレイザーMVC LabelFor CamelCaseでアンダースコアを置換する
@Html.LabelFor(model => model.business_name)
my DBモデルのフィールド名に "_"を含む列名があります。 フォームに表示するときにCamel Caseにこれらの値を表示する方法はありますか?以下のような私はレイザーMVC LabelFor CamelCaseでアンダースコアを置換する
@Html.LabelFor(model => model.business_name)
でのasp.net MVC3を使用しています
"BUSINESSNAMEは、" あなただけDisplayAttributeを使用することができませんでしたか?
なぜ@ Html.Label( "ビジネス名")を使用しないでください。
あなたはデフォルトこのようなものを継承することができる新しいmetadataprovider必要があります。このようなGlobal.asaxの中でそれを登録し
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 ...;
}
}
を:
ModelMetadataProviders.Current = new MyMetadataProvider();
あなただけの実装を提供する必要がありますGetDisplayNameFromDBNameは、プロパティ名
+1の正しい表示名を指定するための正しい方法です。いくつかのEF自動生成ドメインエンティティの代わりにビューモデルをビューに使用する必要があり、答えが完璧であるという答えに加えてください。また、「あなたはただ使ってはいけませんか? –
はい、私は「あなたはすべきです」と言っていましたが、質問の形で答えたいと思ったのですが、その情報を共有したいと思っていました。私はView Modelを使用することについても完全に同意します。これは私が行うことです。ドメインエンティティを属性で飾るのではなく、ビューモデルを作成してそれらを飾るのが好きです。 +1に感謝します。 –
私は最初にdbでEdmxファイルを使用しています。どのように私はdisaplyattributeを使用することができます –