Как получить доступ к свойству родителя в атрибуте проверки

В моем коде ниже я хочу проверить с AttributeValidation, если поле задано в зависимости от свойства его родительского элемента. Комментарий в классе

RequiredIfParentState1

лучше всего описывает мой вопрос.

public class ChildModel()
{
   [RequiredIfParentState1]
   public string ImRequired { get; set; } 
}

public class ParentViewModel()
{
   public int state { get; set; }
   public ChildModel child = new ChildModel();
}

public class RequiredIfParentState1: ValidationAttribute, IClientModelValidator
{
   RequiredIfParentState1()
   {

   }
   void AddValidation(ClientModelValidationContext context)
   {

   }

   protected override ValidationResult IsValid(object i_value, ValidationContext i_context)
   {
      var element = i_context.ObjectInstance;

      if(i_value == null && //what do i have to put here to check if the state is 1?)
      {
         return new ValidationResult($"Field is Required in state 1.");
      }

      return ValidationResult.Success;
   }
}

1 ответ

Я чувствую, что это неправильный подход.

Объект, находящийся в допустимом состоянии, - это одно (обязательные поля и проверка типов), но обработка бизнес-логики - это отдельная задача.

Вы можете написать службу проверки, которая детально исследует модель, проверяет проблемы бизнес-логики и составляет список ошибок.

При обнаружении ошибок вы можете вернуть их в своем ответе.

Другие вопросы по тегам