Всем привет!
Есть кастомный аттрибут со свойством 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