55using Microsoft . AspNetCore . Mvc ;
66using Microsoft . AspNetCore . Mvc . Controllers ;
77using Microsoft . AspNetCore . Mvc . Filters ;
8+ using Microsoft . AspNetCore . Mvc . Infrastructure ;
89using Microsoft . AspNetCore . Mvc . ModelBinding ;
910using Microsoft . Extensions . DependencyInjection ;
1011using Microsoft . Extensions . Options ;
@@ -22,17 +23,15 @@ public class FluentValidationAutoValidationActionFilter : IAsyncActionFilter
2223 private readonly IFluentValidationAutoValidationResultFactory fluentValidationAutoValidationResultFactory ;
2324 private readonly AutoValidationMvcConfiguration autoValidationMvcConfiguration ;
2425
25- public FluentValidationAutoValidationActionFilter (
26- IFluentValidationAutoValidationResultFactory fluentValidationAutoValidationResultFactory ,
27- IOptions < AutoValidationMvcConfiguration > autoValidationMvcConfiguration )
26+ public FluentValidationAutoValidationActionFilter ( IFluentValidationAutoValidationResultFactory fluentValidationAutoValidationResultFactory , IOptions < AutoValidationMvcConfiguration > autoValidationMvcConfiguration )
2827 {
2928 this . fluentValidationAutoValidationResultFactory = fluentValidationAutoValidationResultFactory ;
3029 this . autoValidationMvcConfiguration = autoValidationMvcConfiguration . Value ;
3130 }
3231
3332 public async Task OnActionExecutionAsync ( ActionExecutingContext actionExecutingContext , ActionExecutionDelegate next )
3433 {
35- if ( actionExecutingContext . Controller is ControllerBase controllerBase )
34+ if ( actionExecutingContext . Controller is ControllerBase || actionExecutingContext . Controller . GetType ( ) . HasCustomAttribute < ControllerAttribute > ( ) )
3635 {
3736 var endpoint = actionExecutingContext . HttpContext . GetEndpoint ( ) ;
3837 var controllerActionDescriptor = ( ControllerActionDescriptor ) actionExecutingContext . ActionDescriptor ;
@@ -108,7 +107,8 @@ public async Task OnActionExecutionAsync(ActionExecutingContext actionExecutingC
108107
109108 if ( ! actionExecutingContext . ModelState . IsValid )
110109 {
111- var validationProblemDetails = controllerBase . ProblemDetailsFactory . CreateValidationProblemDetails ( actionExecutingContext . HttpContext , actionExecutingContext . ModelState ) ;
110+ var problemDetailsFactory = serviceProvider . GetRequiredService < ProblemDetailsFactory > ( ) ;
111+ var validationProblemDetails = problemDetailsFactory . CreateValidationProblemDetails ( actionExecutingContext . HttpContext , actionExecutingContext . ModelState ) ;
112112
113113 actionExecutingContext . Result = fluentValidationAutoValidationResultFactory . CreateActionResult ( actionExecutingContext , validationProblemDetails ) ;
114114
0 commit comments