Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 如何在第一项失败时停止FluentValidation RuleForEach_.net Core_Fluentvalidation - Fatal编程技术网

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