2016-09-16 2 views
0

La validation côté client fonctionne correctement pour 'CompanyName' mais pour la classe héritée i.e shipping & ne fonctionne pas. S'il vous plaît suggérer la solution.Validation côté client FluentValidation ne fonctionne pas pour la classe héritée

[Validator(typeof(ClientValidator))] 
public class Client 
{ 
    public string CompanyName{get;set;} 

    private volatile Contact Shipping = null; 
    private volatile Contact Billing = null; 

} 

public class Contact : Address 
{ 

} 

public class Address 
{ 

public String Name{get;set;} 

    public String Phone{get;set;} 
} 


public class ClientValidator : AbstractValidator<Client> 

{ 

     public ClientValidator() 

{ 

RuleFor(x => x.CompanyName).NotNull().WithMessage("Required").Length(1, 15).WithMessage("Length issue."); 


      RuleFor(x => x.Shipping.Name).NotNull().WithMessage("Required").Length(1, 15).WithMessage("Length issue."); 

      RuleFor(x => x.Shipping.Phone).NotNull().WithMessage("Required").Length(1, 15).WithMessage("Length issue."); 
      RuleFor(x => x.Billing.Name).NotNull().WithMessage("Required").Length(1, 15).WithMessage("Length issue."); 
      RuleFor(x => x.Billing.Phone).NotNull().WithMessage("Required").Length(1, 15).WithMessage("Length issue."); 
     } 
    } 

Répondre

0

Pour l'objet de confinement fluentvalidation ne fonctionne pas comme vous l'avez implémenté. Pour cela, référez-vous à la validation des propriétés complexes de la validation courante et essayez avec le code ci-dessous.

[Validator(typeof(ClientValidator))] 
public class Client 
{ 
    public string CompanyName{get;set;} 
    private volatile Contact Shipping = null; 
    private volatile Contact Billing = null; 
} 

public class Contact : Address 
{ 

} 

public class Address 
{ 
    public String Name{get;set;} 
    public String Phone{get;set;} 
} 

public class AddressValidator : AbstractValidator<Address> 
{ 
    public ClientValidator() 
    { 
     RuleFor(x => x.Name).NotNull().WithMessage("Required").Length(1, 15).WithMessage("Length issue."); 
     RuleFor(x => x.Phone).NotNull().WithMessage("Required").Length(1, 15).WithMessage("Length issue."); 
    } 
} 

public class ClientValidator : AbstractValidator<Client> 
{ 
    public ClientValidator() 
    { 
     RuleFor(x => x.CompanyName).NotNull().WithMessage("Required").Length(1, 15).WithMessage("Length issue."); 
     RuleFor(x => x.Shipping).SetValidator(new AddressValidator()); 
     RuleFor(x => x.Billing).SetValidator(new AddressValidator()); 
    } 
} 
+0

Grâce à cela fonctionne. –