2017-08-08 137 views
0

我正在創建一個使用[FromBody]作爲輸入的POST API,其中Order作爲輸入。這Order有一個Buyer財產和這兩個正在驗證使用FluentValidation。以下是類:驗證器未應用於兒童財產

[Validator(typeof(OrderValidator))] 
public class Order 
{ 
    public int ProductId { get; set; } 
    public Buyer Buyer { get; set; } 
} 

[Validator(typeof(BuyerValidator))] 
public class Buyer 
{ 
    public string Name { get; set; } 
    public string Email { get; set; } 
} 

校驗器類:

public class OrderValidator : AbstractValidator<Order> 
{ 
    public OrderValidator() 
    { 
     RuleFor(x => x.ProductId).GreaterThan(0); 
     RuleFor(x => x.Buyer).NotNull(); 
    } 
} 

public class BuyerValidator : AbstractValidator<Buyer> 
{ 
    public BuyerValidator() 
    { 
     RuleFor(x => x.Name).Length(3, 100); 
     RuleFor(x => x.Email).Length(5, 100); 
    } 
} 

在這裏,我將使用兩個類Validator屬性驗證。它在Order課上正常工作,但在Buyer課上沒有被執行。我是否需要以其他方式設置Buyer類的驗證器?

回答

1

買方擴展驗證這樣的:

public class OrderValidator : AbstractValidator<Order> 
{ 
    public OrderValidator() 
    { 
     RuleFor(x => x.ProductId).GreaterThan(0); 
     RuleFor(x => x.Buyer).NotNull().SetValidator(new BuyerValidator()) 
    } 
} 

在實際沒有測試它,在文檔中發現here