2017-08-08 112 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