2009-08-07 65 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