diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultModelBindingContext.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultModelBindingContext.cs
index 5648576fd6..0ff9292a02 100644
--- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultModelBindingContext.cs
+++ b/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultModelBindingContext.cs
@@ -12,6 +12,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
///
public class DefaultModelBindingContext : ModelBindingContext
{
+ private static readonly IValueProvider EmptyValueProvider = new CompositeValueProvider();
+
private IValueProvider _originalValueProvider;
private ActionContext _actionContext;
private ModelStateDictionary _modelState;
@@ -314,13 +316,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
return valueProvider;
}
- var bindingSourceValueProvider = valueProvider as IBindingSourceValueProvider;
- if (bindingSourceValueProvider == null)
+ if (!(valueProvider is IBindingSourceValueProvider bindingSourceValueProvider))
{
return valueProvider;
}
- return bindingSourceValueProvider.Filter(bindingSource) ?? new CompositeValueProvider();
+ return bindingSourceValueProvider.Filter(bindingSource) ?? EmptyValueProvider;
}
private struct State
diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Binders/CollectionModelBinder.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Binders/CollectionModelBinder.cs
index d219519e4f..16834ebadc 100644
--- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Binders/CollectionModelBinder.cs
+++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Binders/CollectionModelBinder.cs
@@ -23,6 +23,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
/// Type of elements in the collection.
public class CollectionModelBinder : ICollectionModelBinder
{
+ private static readonly IValueProvider EmptyValueProvider = new CompositeValueProvider();
private Func