From 8379ddeb30b9dd1e041ae4f4030060fb7982feab Mon Sep 17 00:00:00 2001 From: Mauro van der Gun Date: Thu, 19 Oct 2023 09:43:58 -0400 Subject: [PATCH] fix unvalidated entries when validation is skipped due to annotation configuration --- Directory.Build.props | 2 +- ...entValidationAutoValidationActionFilter.cs | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 8193bb6..af569cf 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -9,7 +9,7 @@ - 1.3.0 + 1.3.1 SharpGrip SharpGrip SharpGrip diff --git a/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs b/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs index 47578eb..d1e742b 100644 --- a/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs +++ b/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs @@ -41,6 +41,8 @@ public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionE if (autoValidationMvcConfiguration.ValidationStrategy == ValidationStrategy.Annotations && endpoint != null && !endpoint.Metadata.OfType().Any()) { + HandleUnvalidatedEntries(context); + await next(); return; @@ -76,13 +78,7 @@ public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionE } } - if (autoValidationMvcConfiguration.DisableBuiltInModelValidation) - { - foreach (var modelStateEntry in context.ModelState.Values.Where(modelStateEntry => modelStateEntry.ValidationState == ModelValidationState.Unvalidated)) - { - modelStateEntry.ValidationState = ModelValidationState.Skipped; - } - } + HandleUnvalidatedEntries(context); if (!context.ModelState.IsValid) { @@ -96,5 +92,16 @@ public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionE await next(); } + + private void HandleUnvalidatedEntries(ActionExecutingContext context) + { + if (autoValidationMvcConfiguration.DisableBuiltInModelValidation) + { + foreach (var modelStateEntry in context.ModelState.Values.Where(modelStateEntry => modelStateEntry.ValidationState == ModelValidationState.Unvalidated)) + { + modelStateEntry.ValidationState = ModelValidationState.Skipped; + } + } + } } } \ No newline at end of file