2011-07-09 3 views

答えて

5

でのasp.net MVC3を使用しています

"BUSINESSNAMEは、" あなただけDisplayAttributeを使用することができませんでしたか?

+2

+1の正しい表示名を指定するための正しい方法です。いくつかのEF自動生成ドメインエンティティの代わりにビューモデルをビューに使用する必要があり、答えが完璧であるという答えに加えてください。また、「あなたはただ使ってはいけませんか? –

+0

はい、私は「あなたはすべきです」と言っていましたが、質問の形で答えたいと思ったのですが、その情報を共有したいと思っていました。私はView Modelを使用することについても完全に同意します。これは私が行うことです。ドメインエンティティを属性で飾るのではなく、ビューモデルを作成してそれらを飾るのが好きです。 +1に感謝します。 –

+1

私は最初にdbでEdmxファイルを使用しています。どのように私はdisaplyattributeを使用することができます –

1

なぜ@ Html.Label( "ビジネス名")を使用しないでください。

5

あなたはデフォルトこのようなものを継承することができる新しい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は、プロパティ名

関連する問題