验证器未应用于子 属性
Validator not being applied on child property
我正在创建一个 POST
API,它使用 [FromBody]
将 Order
作为输入。这个 Order
有一个 Buyer
属性 并且这两个都在使用 FluentValidation
进行验证。以下是 classes:
[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; }
}
这些 classes 的验证者:
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);
}
}
在这里,我在两个 class 上使用 Validator
属性应用验证器。它在 Order
class 上运行良好,但未在 Buyer
class 上执行。我是否必须以其他方式为 Buyer
class 设置验证器?
像这样扩展买家验证:
public class OrderValidator : AbstractValidator<Order>
{
public OrderValidator()
{
RuleFor(x => x.ProductId).GreaterThan(0);
RuleFor(x => x.Buyer).NotNull().SetValidator(new BuyerValidator())
}
}
未实际测试,在文档中找到 here
我正在创建一个 POST
API,它使用 [FromBody]
将 Order
作为输入。这个 Order
有一个 Buyer
属性 并且这两个都在使用 FluentValidation
进行验证。以下是 classes:
[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; }
}
这些 classes 的验证者:
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);
}
}
在这里,我在两个 class 上使用 Validator
属性应用验证器。它在 Order
class 上运行良好,但未在 Buyer
class 上执行。我是否必须以其他方式为 Buyer
class 设置验证器?
像这样扩展买家验证:
public class OrderValidator : AbstractValidator<Order>
{
public OrderValidator()
{
RuleFor(x => x.ProductId).GreaterThan(0);
RuleFor(x => x.Buyer).NotNull().SetValidator(new BuyerValidator())
}
}
未实际测试,在文档中找到 here