2016-09-16 3 views
0

クライアント側の検証は、「仕入」罰金しかし&課金のが動作していないの出荷を継承したクラスすなわちのためのために働いています。解決策を提案してください。封じ込めオブジェクトfluentvalidationについてはFluentValidationクライアント側の検証が継承されたクラスのために働いていない

[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."); 
     } 
    } 

答えて

0

あなたが実装されているように動作しません。このため

が流暢な検証から、複雑な性質の検証を参照して、以下のコードで試してください。それが動作

[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

感謝。 –

関連する問題