Skip to content

Commit 5322264

Browse files
authored
Merge pull request #2 from SharpGrip/1-mvc-filter-breaks-if-parameter-is-not-present-in-the-action-arguments
add check if the parameter exists in the action arguments
2 parents 3e71288 + def49fa commit 5322264

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</PropertyGroup>
1010

1111
<PropertyGroup>
12-
<PackageVersion>1.0.0</PackageVersion>
12+
<PackageVersion>1.0.1</PackageVersion>
1313
<Company>SharpGrip</Company>
1414
<Authors>SharpGrip</Authors>
1515
<Copyright>SharpGrip</Copyright>

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

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,26 @@ public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionE
4040

4141
foreach (var parameter in actionDescriptor.Parameters)
4242
{
43-
var subject = context.ActionArguments[parameter.Name];
44-
var parameterType = parameter.ParameterType;
43+
if (context.ActionArguments.TryGetValue(parameter.Name, out var subject))
44+
{
45+
var parameterType = parameter.ParameterType;
4546

46-
// ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
47-
var bindingSource = parameter.BindingInfo?.BindingSource;
47+
// ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
48+
var bindingSource = parameter.BindingInfo?.BindingSource;
4849

49-
// ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
50-
if (subject != null && (bindingSource == BindingSource.Body || (bindingSource == BindingSource.Query && parameterType.IsClass)))
51-
{
52-
if (serviceProvider.GetValidator(parameterType) is IValidator validator)
50+
// ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
51+
if (subject != null && (bindingSource == BindingSource.Body || (bindingSource == BindingSource.Query && parameterType.IsClass)))
5352
{
54-
var validationResult = await validator.ValidateAsync(new ValidationContext<object>(subject), context.HttpContext.RequestAborted);
55-
56-
if (!validationResult.IsValid)
53+
if (serviceProvider.GetValidator(parameterType) is IValidator validator)
5754
{
58-
foreach (var error in validationResult.Errors)
55+
var validationResult = await validator.ValidateAsync(new ValidationContext<object>(subject), context.HttpContext.RequestAborted);
56+
57+
if (!validationResult.IsValid)
5958
{
60-
context.ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
59+
foreach (var error in validationResult.Errors)
60+
{
61+
context.ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
62+
}
6163
}
6264
}
6365
}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ their projects.
2121

2222
## Installation
2323

24-
Register your validators with the Microsoft DI service container, for instructions on settings that up please see https://docs.fluentvalidation.net/en/latest/di.html.
24+
Register your validators with the Microsoft DI service container, for instructions on setting that up please see https://docs.fluentvalidation.net/en/latest/di.html.
2525

2626
### MVC controllers [![NuGet](https://img.shields.io/nuget/v/SharpGrip.FluentValidation.AutoValidation.Mvc)](https://www.nuget.org/packages/SharpGrip.FluentValidation.AutoValidation.Mvc)
2727

0 commit comments

Comments
 (0)