Как перехватить значения кастомного RequiredAttribute из ModelState в .NET Core Web API?

Всем привет!
Есть кастомный аттрибут со свойством BusinessRule

public class RequiredBusinessRuleAttribute : RequiredAttribute
    {
        public string BusinessRule { get; set; }
        public override bool IsValid(object value)
        {
            return String.IsNullOrWhiteSpace(Convert.ToString(value)) ? false : true;
        }
    }


Используется в дто, которое прилетает в контроллере, как

public class Object
    {
        [RequiredBusinessRule(BusinessRule = "Бизнес правило 1 нарушено")]
        public string ObjectPropertyOne { get; set; }

        [RequiredBusinessRule(BusinessRule = "Бизнес правило 2 нарушено")]
        public string ObjectPropertySecond { get; set; }
    }


Далее, есть класс переопределяющий ObjectResult для возврата 422 вместо 400

public class ValidationFailedResult : ObjectResult
    {
        public ValidationFailedResult(ModelStateDictionary modelState)
            : base(modelState)
        {
            StatusCode = StatusCodes.Status422UnprocessableEntity;
        }
    }


И валидационный атрибут для контроллера
public class ValidateModelAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            if (!context.ModelState.IsValid)
            {
                context.Result = new ValidationFailedResult(context.ModelState);
            }
        }
    }


Как получить из ModelState значение валидационного аттрибута RequiredBusinessRuleAttribute? Мне нужно достучаться до свойства BusinessRule
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы