5
5
using Microsoft . AspNetCore . Mvc ;
6
6
using Microsoft . AspNetCore . Mvc . Controllers ;
7
7
using Microsoft . AspNetCore . Mvc . Filters ;
8
+ using Microsoft . AspNetCore . Mvc . Infrastructure ;
8
9
using Microsoft . AspNetCore . Mvc . ModelBinding ;
9
10
using Microsoft . Extensions . DependencyInjection ;
10
11
using Microsoft . Extensions . Options ;
@@ -22,17 +23,15 @@ public class FluentValidationAutoValidationActionFilter : IAsyncActionFilter
22
23
private readonly IFluentValidationAutoValidationResultFactory fluentValidationAutoValidationResultFactory ;
23
24
private readonly AutoValidationMvcConfiguration autoValidationMvcConfiguration ;
24
25
25
- public FluentValidationAutoValidationActionFilter (
26
- IFluentValidationAutoValidationResultFactory fluentValidationAutoValidationResultFactory ,
27
- IOptions < AutoValidationMvcConfiguration > autoValidationMvcConfiguration )
26
+ public FluentValidationAutoValidationActionFilter ( IFluentValidationAutoValidationResultFactory fluentValidationAutoValidationResultFactory , IOptions < AutoValidationMvcConfiguration > autoValidationMvcConfiguration )
28
27
{
29
28
this . fluentValidationAutoValidationResultFactory = fluentValidationAutoValidationResultFactory ;
30
29
this . autoValidationMvcConfiguration = autoValidationMvcConfiguration . Value ;
31
30
}
32
31
33
32
public async Task OnActionExecutionAsync ( ActionExecutingContext actionExecutingContext , ActionExecutionDelegate next )
34
33
{
35
- if ( actionExecutingContext . Controller is ControllerBase controllerBase )
34
+ if ( actionExecutingContext . Controller is ControllerBase || actionExecutingContext . Controller . GetType ( ) . HasCustomAttribute < ControllerAttribute > ( ) )
36
35
{
37
36
var endpoint = actionExecutingContext . HttpContext . GetEndpoint ( ) ;
38
37
var controllerActionDescriptor = ( ControllerActionDescriptor ) actionExecutingContext . ActionDescriptor ;
@@ -108,7 +107,8 @@ public async Task OnActionExecutionAsync(ActionExecutingContext actionExecutingC
108
107
109
108
if ( ! actionExecutingContext . ModelState . IsValid )
110
109
{
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 ) ;
112
112
113
113
actionExecutingContext . Result = fluentValidationAutoValidationResultFactory . CreateActionResult ( actionExecutingContext , validationProblemDetails ) ;
114
114
0 commit comments