Как получить доступ к свойству родителя в атрибуте проверки
В моем коде ниже я хочу проверить с 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 ответ
Я чувствую, что это неправильный подход.
Объект, находящийся в допустимом состоянии, - это одно (обязательные поля и проверка типов), но обработка бизнес-логики - это отдельная задача.
Вы можете написать службу проверки, которая детально исследует модель, проверяет проблемы бизнес-логики и составляет список ошибок.
При обнаружении ошибок вы можете вернуть их в своем ответе.