2009-08-07 7 views
6

誰かがASP.NET MVC 2プレビュー1でバディクラスの例を持っていますか?私はそれについてMSDN上で何かを見つけることができないようだが、ScottGuによると、最新のリリースでその機能を追加しました。ASP.NET MVC V2 - バディクラス

答えて

10

あなたが探しているのは、MetadataTypeAttributeです。これは、MVC固有のものではなく、3.5で導入されたDataAnnotations名前空間の一部です。クラス自体の外部にある部分クラスのメンバーを飾ることができます。

たとえば、Customerという名前の部分クラス型が生成されていて、それに属性を追加する場合は、同じ名前空間に新しい部分を作成し、MetadataTypeでタグ付けすることができます。次に、一致する属性を持つMetadataクラスを作成し、それらを飾ります。

/* Generated class */ 
public partial class Customer 
{ 
    public string Name { get; set; } 
} 


/* MetadataType decorated class */ 
[MetadataType(CustomerMetadata)] 
public partial class Customer 
{ /* ... */ } 


/* Metadata type */ 
public class CustomerMetadata 
{ 
    [Required(ErrorMessage = "Name is required")] 
    public string Name { get; set; } 
} 
+0

ありがとうございます!それがまさに私が必要としていたものです。 :) –

+0

クラスを分けるポイントは何ですか? – UpTheCreek

+1

EFやLINQ2SQLから自動生成されたクラスを処理するのは醜い回避策なので、あまり「ポイント」ではありません。クラスファイルが生成されるので、プロパティに属性を適用する方法がないため、ハッキーな代替が作成されました。 –