diff --git a/FluentValidation.AutoValidation.Endpoints/FluentValidation.AutoValidation.Endpoints.csproj b/FluentValidation.AutoValidation.Endpoints/FluentValidation.AutoValidation.Endpoints.csproj index 5019ec4..15808d0 100644 --- a/FluentValidation.AutoValidation.Endpoints/FluentValidation.AutoValidation.Endpoints.csproj +++ b/FluentValidation.AutoValidation.Endpoints/FluentValidation.AutoValidation.Endpoints.csproj @@ -5,7 +5,7 @@ - net7.0;net8.0;net9.0 + net7.0;net8.0;net9.0;net10.0 SharpGrip.FluentValidation.AutoValidation.Endpoints SharpGrip.FluentValidation.AutoValidation.Endpoints SharpGrip FluentValidation AutoValidation Endpoints diff --git a/FluentValidation.AutoValidation.Mvc/FluentValidation.AutoValidation.Mvc.csproj b/FluentValidation.AutoValidation.Mvc/FluentValidation.AutoValidation.Mvc.csproj index 4117c6f..f800b8e 100644 --- a/FluentValidation.AutoValidation.Mvc/FluentValidation.AutoValidation.Mvc.csproj +++ b/FluentValidation.AutoValidation.Mvc/FluentValidation.AutoValidation.Mvc.csproj @@ -5,7 +5,7 @@ - netcoreapp3.1;net6.0;net7.0;net8.0;net9.0 + netcoreapp3.1;net6.0;net7.0;net8.0;net9.0;net10.0 SharpGrip.FluentValidation.AutoValidation.Mvc SharpGrip.FluentValidation.AutoValidation.Mvc SharpGrip FluentValidation AutoValidation MVC diff --git a/FluentValidation.AutoValidation.Mvc/src/Configuration/AutoValidationMvcConfiguration.cs b/FluentValidation.AutoValidation.Mvc/src/Configuration/AutoValidationMvcConfiguration.cs index 0d86cc3..b198192 100644 --- a/FluentValidation.AutoValidation.Mvc/src/Configuration/AutoValidationMvcConfiguration.cs +++ b/FluentValidation.AutoValidation.Mvc/src/Configuration/AutoValidationMvcConfiguration.cs @@ -9,6 +9,11 @@ namespace SharpGrip.FluentValidation.AutoValidation.Mvc.Configuration { public class AutoValidationMvcConfiguration { + /// + /// Disables response overrides (i.e. only updates the value of ModelState.IsValid parameter). + /// + public bool DontOverrideResult { get; set; } + /// /// Disables the built-in .NET model (data annotations) validation. /// diff --git a/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs b/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs index c6a7d79..59443f9 100644 --- a/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs +++ b/FluentValidation.AutoValidation.Mvc/src/Filters/FluentValidationAutoValidationActionFilter.cs @@ -106,7 +106,7 @@ public async Task OnActionExecutionAsync(ActionExecutingContext actionExecutingC HandleUnvalidatedEntries(actionExecutingContext); - if (!actionExecutingContext.ModelState.IsValid) + if (!actionExecutingContext.ModelState.IsValid && !autoValidationMvcConfiguration.DontOverrideResult) { var problemDetailsFactory = serviceProvider.GetRequiredService(); var validationProblemDetails = problemDetailsFactory.CreateValidationProblemDetails(actionExecutingContext.HttpContext, actionExecutingContext.ModelState); diff --git a/FluentValidation.AutoValidation.Shared/FluentValidation.AutoValidation.Shared.csproj b/FluentValidation.AutoValidation.Shared/FluentValidation.AutoValidation.Shared.csproj index eed5b58..f570147 100644 --- a/FluentValidation.AutoValidation.Shared/FluentValidation.AutoValidation.Shared.csproj +++ b/FluentValidation.AutoValidation.Shared/FluentValidation.AutoValidation.Shared.csproj @@ -5,7 +5,7 @@ - netstandard2.0;netstandard2.1;netcoreapp3.1;net6.0;net7.0;net8.0;net9.0 + netstandard2.0;netstandard2.1;netcoreapp3.1;net6.0;net7.0;net8.0;net9.0;net10.0 SharpGrip.FluentValidation.AutoValidation.Shared SharpGrip.FluentValidation.AutoValidation.Shared SharpGrip FluentValidation AutoValidation Shared diff --git a/README.md b/README.md index cf29fe7..a3856b2 100644 --- a/README.md +++ b/README.md @@ -74,13 +74,14 @@ app.MapPost("/", (SomeOtherModel someOtherModel) => $"Hello again {someOtherMode | Property | Default value | Description | |----------------------------------------------|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| DontOverrideResult | `false` | Disables response overrides (i.e. only updates the value of `ModelState.IsValid` parameter). | | DisableBuiltInModelValidation | `false` | Disables the built-in .NET model (data annotations) validation. | | ValidationStrategy | `ValidationStrategy.All` | Configures the validation strategy. Validation strategy `ValidationStrategy.All` enables asynchronous automatic validation on all controllers inheriting from `ControllerBase`. Validation strategy `ValidationStrategy.Annotations` enables asynchronous automatic validation on controllers inheriting from `ControllerBase` decorated (class or method) with a `[AutoValidationAttribute]` attribute. | | EnableBodyBindingSourceAutomaticValidation | `true` | Enables asynchronous automatic validation for parameters bound from `BindingSource.Body` binding sources (typically parameters decorated with the `[FromBody]` attribute). | | EnableFormBindingSourceAutomaticValidation | `false` | Enables asynchronous automatic validation for parameters bound from `BindingSource.Form` binding sources (typically parameters decorated with the `[FromForm]` attribute). | | 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). | -| EnableHeaderBindingSourceAutomaticValidation | `false` | Enables asynchronous automatic validation for parameters bound from `BindingSource.Header` binding sources (typically parameters decorated with the `[FromHeader]` attribute). | +| EnableHeaderBindingSourceAutomaticValidation | `false` | Enables asynchronous automatic validation for parameters bound from `BindingSource.Header` binding sources (typically parameters decorated with the `[FromHeader]` 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). | diff --git a/Tests/FluentValidation.AutoValidation.Tests.csproj b/Tests/FluentValidation.AutoValidation.Tests.csproj index 0f5fe11..bf842ef 100644 --- a/Tests/FluentValidation.AutoValidation.Tests.csproj +++ b/Tests/FluentValidation.AutoValidation.Tests.csproj @@ -1,7 +1,7 @@ - net7.0;net8.0;net9.0 + net7.0;net8.0;net9.0;net10.0 latest false SharpGrip.FluentValidation.AutoValidation.Tests