2011-08-22 28 views
5

Tôi có một lớp gọi làThêm MetadataType đến lớp được thừa kế trong 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; } 
} 

Tôi có một lớp gọi là

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

Tôi đã lớp thứ ba của tôi gọi là Người bị tuyên bố lớp một phần và thứ tư được gọi là PersonMetaData được sử dụng để khai báo chú thích

[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; } 
    } 

Trong chế độ xem MVC, tôi đã nhập mạnh mẽ trang dựa trên người? Vấn đề là, yêu cầu và xác nhận độ dài chuỗi không hoạt động. Vấn đề này xảy ra khi kế thừa một lớp và tạo một lớp từng phần để tham chiếu đến MetadataType.

Nếu không có kế thừa thì MetadataType hoạt động tốt khi gọi một lớp một phần.

Bất kỳ giải pháp nào khi sử dụng MetadataType cho lớp dẫn xuất và sử dụng một phần với nó?

Cảm ơn

+0

Vẫn không chấp nhận câu trả lời. –

Trả lời

1

Di rằng một phần và thử điều này:

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