C#跨不同ValidationAttribute共享ValidationContext失败

C#跨不同ValidationAttribute共享ValidationContext失败,c#,asp.net-core-webapi,model-validation,validationattribute,C#,Asp.net Core Webapi,Model Validation,Validationattribute,希望使用一系列自定义验证属性对输入模型应用验证,如下所述 如果第一个验证属性即“ValidatorAttributeOne”的验证结果为真,则无需处理“ValidatorAttributeTo”验证逻辑 为了实现分配给“validationContext.Items”的“ValidationAttributeOne”的有效结果,字典认为“validationContext”将在同一http请求中的不同“ValidationAttributes”之间共享,但行下总是抛出下面的异常 var isDe

希望使用一系列自定义验证属性对输入模型应用验证,如下所述

如果第一个验证属性即“ValidatorAttributeOne”的验证结果为真,则无需处理“ValidatorAttributeTo”验证逻辑

为了实现分配给“validationContext.Items”的“ValidationAttributeOne”的有效结果,字典认为“validationContext”将在同一http请求中的不同“ValidationAttributes”之间共享,但行下总是抛出下面的异常

var isDependedFilterValidated = (bool?)validationContext.Items[dependedFilter]
“消息”:“字典中不存在给定的键‘ValidationAttributeOne’。”


首先,如果在第一个验证属性为true时不想执行
validationContext
,则两个自定义验证属性不能共享validationContext。您可以将两个validationAttributes的IsValid方法的内容一起设置

例如:

public class ValidationAttributeThree : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            
            if (ValidationAttributeOne IsValid method Content is true) {
                return ValidationResult.Success;
             }
            else if(ValidationAttributeTwo IsValid method Content is true){
               return new ValidationResult("ValidationAttributeOne error message");
            }else{
                return new ValidationResult("ValidationAttributeOne error message"+"ValidationAttributeTwo error message");
            }
                
        }
    }
public class ValidationAttributeThree : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            
            if (ValidationAttributeOne IsValid method Content is true) {
                return ValidationResult.Success;
             }
            else if(ValidationAttributeTwo IsValid method Content is true){
               return new ValidationResult("ValidationAttributeOne error message");
            }else{
                return new ValidationResult("ValidationAttributeOne error message"+"ValidationAttributeTwo error message");
            }
                
        }
    }