Skip to content

Commit e83e0e5

Browse files
committed
add check on controller attribute
1 parent f4dc05a commit e83e0e5

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Microsoft.AspNetCore.Mvc;
66
using Microsoft.AspNetCore.Mvc.Controllers;
77
using Microsoft.AspNetCore.Mvc.Filters;
8+
using Microsoft.AspNetCore.Mvc.Infrastructure;
89
using Microsoft.AspNetCore.Mvc.ModelBinding;
910
using Microsoft.Extensions.DependencyInjection;
1011
using 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

Comments
 (0)