在C#中将MetadataType添加到派生类

时间:2011-08-22 06:00:50

标签: asp.net-mvc-3 c#-4.0 entity-framework-4.1

我有一个名为

的班级
public partial class Contact
{
   public int Id { get; set; }
   public string Title { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

我有另一个名为

的班级
public partial class Person : Contact
{
   public string Occupation { get; set; }
   public string Country { get; set; }
}

我的第三个类名为Person,它被声明为Partial,第四个类名为PersonMetaData,用于声明注释

 [MetadataType(typeof(PersonMetadata))]
    public partial class Person : Contact
    {

    }

    public class PersonMetadata
    {
         [StringLength(20, ErrorMessageResourceName = "FirstNameLength",   
         ErrorMessageResourceType = typeof(BasicErrors))]
        [Required(ErrorMessageResourceName = "FirstNameRequired",  
          ErrorMessageResourceType  = typeof(BasicErrors))]
        public string FirstName { get; set; }

        [StringLength(20, ErrorMessageResourceName = "LastNameLength", 
         ErrorMessageResourceType = typeof(BasicErrors))]
        [Required(ErrorMessageResourceName = "LastNameRequired", ErrorMessageResourceType 
         = typeof(BasicErrors))]
        public string LastName { get; set; }
    }

在我的MVC视图中,我创建了一个基于Person的强类型页面?问题是,必需和字符串长度验证不起作用。继承类并创建部分类以引用MetadataType时会发生此问题。

如果没有继承,那么MetadataType在调用Partial Class时工作正常。

将MetadataType用于派生类并使用partial的任何解决方案?

由于

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

删除该部分并尝试此操作:

[MetadataType(typeof(PersonMetadata))]
public partial class Person : Contact
{
   public string Occupation { get; set; }
   public string Country { get; set; }
}