.net core 如何在第一项失败时停止FluentValidation RuleForEach
我的对象中有一个嵌套集合属性。我需要在收集项目第一次失败时停止。我的意思是,错误信息不应该重复每个项目的失败。级联不适用于此场景。谢谢:) 我的目标:.net core 如何在第一项失败时停止FluentValidation RuleForEach,.net-core,fluentvalidation,.net Core,Fluentvalidation,我的对象中有一个嵌套集合属性。我需要在收集项目第一次失败时停止。我的意思是,错误信息不应该重复每个项目的失败。级联不适用于此场景。谢谢:) 我的目标: public class Customer{ public string CustomerName{get;set;} public List<Order> Orders {get;set;} } public class Order{ public string OrderNumber{get;s
public class Customer{
public string CustomerName{get;set;}
public List<Order> Orders {get;set;}
}
public class Order{
public string OrderNumber{get;set;}
public int Amount{get;set;}
}
我对嵌套对象使用fluent验证,如下所示。但当它运行时,错误消息是重复的。第一个项目出现故障时应停止
代码:
错误输出(实际):
错误输出(应为):
您可以覆盖ValidationResult以获取第一个错误。 像这样:
public override ValidationResult Validate(ValidationContext<TestEntity> context)
{
List<ValidationFailure> mainErrors = new List<ValidationFailure>();
mainErrors.Add(base.Validate(context).Errors.FirstOrDefault());
return new ValidationResult(mainErrors);
}
public override ValidationResult Validate(ValidationContext上下文)
{
List main errors=新列表();
mainErrors.Add(base.Validate(context.Errors.FirstOrDefault());
返回新的ValidationResult(mainErrors);
}
this.RuleForEach(x => x.Orders).Cascade(CascadeMode = CascadeMode.Stop).SetValidator(new ShipmentListRequestItemValidator()));
"OrderNumber is null!", "OrderNumber is empty!", "Amount should be greater than 0"
"OrderNumber is null!"
public override ValidationResult Validate(ValidationContext<TestEntity> context)
{
List<ValidationFailure> mainErrors = new List<ValidationFailure>();
mainErrors.Add(base.Validate(context).Errors.FirstOrDefault());
return new ValidationResult(mainErrors);
}