From 455094238d180493675695a2c98debcdef054b13 Mon Sep 17 00:00:00 2001 From: Mauro van der Gun Date: Wed, 4 Dec 2024 16:57:54 -0400 Subject: [PATCH] add null binding source --- .../src/Configuration/AutoValidationMvcConfiguration.cs | 5 +++++ .../Filters/FluentValidationAutoValidationActionFilter.cs | 3 ++- README.md | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/FluentValidation.AutoValidation.Mvc/src/Configuration/AutoValidationMvcConfiguration.cs b/FluentValidation.AutoValidation.Mvc/src/Configuration/AutoValidationMvcConfiguration.cs index dab1c4b..8fb82e2 100644 --- a/FluentValidation.AutoValidation.Mvc/src/Configuration/AutoValidationMvcConfiguration.cs +++ b/FluentValidation.AutoValidation.Mvc/src/Configuration/AutoValidationMvcConfiguration.cs @@ -49,6 +49,11 @@ public class AutoValidationMvcConfiguration /// public bool EnableCustomBindingSourceAutomaticValidation { get; set; } = false; + /// + /// Enables asynchronous automatic validation for parameters not bound from any binding source (typically parameters without a declared or inferred binding source). + /// + public bool EnableNullBindingSourceAutomaticValidation { get; set; } = false; + /// /// Holds the overridden result factory. This property is meant for infrastructure and should not be used by application code. /// diff --git a/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs b/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs index 2ae20dd..c0ae922 100644 --- a/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs +++ b/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs @@ -141,7 +141,8 @@ private bool HasValidBindingSource(BindingSource? bindingSource) (autoValidationMvcConfiguration.EnableFormBindingSourceAutomaticValidation && bindingSource == BindingSource.Form) || (autoValidationMvcConfiguration.EnableQueryBindingSourceAutomaticValidation && bindingSource == BindingSource.Query) || (autoValidationMvcConfiguration.EnablePathBindingSourceAutomaticValidation && bindingSource == BindingSource.Path) || - (autoValidationMvcConfiguration.EnableCustomBindingSourceAutomaticValidation && bindingSource == BindingSource.Custom); + (autoValidationMvcConfiguration.EnableCustomBindingSourceAutomaticValidation && bindingSource == BindingSource.Custom) || + (autoValidationMvcConfiguration.EnableNullBindingSourceAutomaticValidation && bindingSource == null); } private void HandleUnvalidatedEntries(ActionExecutingContext context) diff --git a/README.md b/README.md index 36cf133..3ac5fc5 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ app.MapPost("/", (SomeOtherModel someOtherModel) => $"Hello again {someOtherMode | EnableQueryBindingSourceAutomaticValidation | `true` | Enables asynchronous automatic validation for parameters bound from `BindingSource.Query` binding sources (typically parameters decorated with the `[FromQuery]` attribute). | | EnablePathBindingSourceAutomaticValidation | `false` | Enables asynchronous automatic validation for parameters bound from `BindingSource.Path` binding sources (typically parameters decorated with the `[FromRoute]` attribute). | | EnableCustomBindingSourceAutomaticValidation | `false` | Enables asynchronous automatic validation for parameters bound from `BindingSource.Custom` binding sources. | +| EnableNullBindingSourceAutomaticValidation | `false` | Enables asynchronous automatic validation for parameters not bound from any binding source (typically parameters without a declared or inferred binding source). | ``` using SharpGrip.FluentValidation.AutoValidation.Mvc.Extensions;