2011-08-22 46 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; } 
}