2011-08-22 73 views
5

我有一个名为类添加MetadataType到派生类在C#

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

我有一个名为

称为PersonMetaData
public partial class Person : Contact 
{ 
    public string Occupation { get; set; } 
    public string Country { get; set; } 
} 

我已经被宣布我叫个人三等功部分和第四类另一类用于声明注释

[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的分类时,会发生此问题。

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

任何解决方案使用派生类的MetadataType和部分与它??

谢谢

+0

还是不接受的答案。 –

回答

1

删除部分和尝试这个办法:

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