2011-08-22 3 views
5

ho una classe chiamataAggiungi MetadataType alla classe derivata in 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; } 
} 

Ho un'altra classe chiamata

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

ho la mia terza classe denominata persona che è dichiarata classe parziale e Quarto chiamato PersonMetaData utilizzato per dichiarare annotazioni

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

Nella mia vista MVC, ho effettuato una digitazione fortemente pagina basata sulla persona? Il problema è, richiesto e le convalide della lunghezza della stringa non funzionano. Questo problema si verifica quando si eredita una classe e si crea una classe parziale per fare riferimento a MetadataType.

Se non vi è ereditarietà, MetadataType funziona correttamente quando si chiama una classe parziale.

Qualsiasi soluzione quando si utilizza MetadataType per la classe derivata e l'utilizzo parziale con esso ??

Grazie

+0

Ancora non ha accettato la risposta. –

risposta

1

rimuovere quella parziale e provare questo:

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