2011-10-27 9 views
1

私はコードにアクセスできないビジネスオブジェクトのAPIを消費しています。私はこれらのオブジェクトを私のかみそりビューで直接使用し、オブジェクトがインスタンス化された後に私のカスタムdisplayName属性を適用できるようにしたいと考えています。これに代えのでプログラムにカスタム属性をプロパティに適用する

、:

[DisplayName("First Name")] 
public string GivenName; 

私がやりたい:

Profile.GivenName.DisplayName("FirstName"); 

私はどのようにカスタム属性を作成して理解し、それらは、プログラムすることでトラブルを抱えています。

これができたら、私はDataAnnotationsをさらに適用することができます。

答えて

2

代わりに、ビジネスオブジェクトからクラスを派生し、MetaDataType Attributeを使用するのはなぜですか?

[MetadataType(typeof(IMyAttributes)) 
public DerivedClass : BusinessClass 
{ 
} 

public interface IMyAttributes 
{ 
    [Required] 
    public string Name { get; set; } 
} 
+0

これは良い考えです。私は余分なレイヤーを作るのを避けようとしていましたが、インターフェイスの考え方は良いです。私はインターフェイスにカスタム属性を適用できますか? – Arnej65

+0

はい、インターフェイスおよびインターフェイスのプロパティに属性を適用できます。 –

+1

タイプが封印されていない場合、これは間違いなく移動方法です。 –

0

独自のModelMetadataProviderを作成し、他のソースからメタデータを検索することができます。

はここに抽象クラスを参照してください:http://msdn.microsoft.com/en-us/library/system.web.mvc.modelmetadataprovider.aspx

デフォルトのプロバイダはDataAnnotationsを使用していますが、同じように簡単にSQLデータベースやXMLファイル、または類似した何かを見てものを書くことができます。

関連する問題