2009-08-07 68 views

回答

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

Thanks t噸!這正是我需要的。 :) – 2009-08-07 16:32:04

+0

分開課程有什麼意義? – UpTheCreek 2009-12-09 10:44:49

+1

這不是一個「重點」,因爲它是處理自動生成的EF或LINQ2SQL類的醜陋解決方法。因爲生成了類文件,所以沒有辦法將屬性應用於屬性,因此創建了一個黑客替代品。 – 2009-12-09 15:32:34