Remove OperationBindingContext
This change trims a few concepts that aren't really needed inside ModelBinders anymore, and removes the OperationBindingContext class.
This commit is contained in:
parent
4e8e30437f
commit
756cd2dab8
|
|
@ -2,6 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||
|
|
@ -11,6 +12,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// </summary>
|
||||
public abstract class ModelBindingContext
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents the <see cref="Mvc.ActionContext"/> associated with this context.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The property setter is provided for unit testing purposes only.
|
||||
/// </remarks>
|
||||
public abstract ActionContext ActionContext { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a model name which is explicitly set using an <see cref="IModelNameProvider"/>.
|
||||
/// </summary>
|
||||
|
|
@ -27,6 +36,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// </summary>
|
||||
public abstract string FieldName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the <see cref="Http.HttpContext"/> associated with this context.
|
||||
/// </summary>
|
||||
public virtual HttpContext HttpContext => ActionContext?.HttpContext;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets an indication that the current binder is handling the top-level object.
|
||||
/// </summary>
|
||||
|
|
@ -57,6 +71,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// Gets or sets the <see cref="ModelStateDictionary"/> used to capture <see cref="ModelState"/> values
|
||||
/// for properties in the object graph of the model when binding.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The property setter is provided for unit testing purposes only.
|
||||
/// </remarks>
|
||||
public abstract ModelStateDictionary ModelState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -65,12 +82,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// <remarks>
|
||||
/// The <see cref="ModelMetadata"/> property must be set to access this property.
|
||||
/// </remarks>
|
||||
public abstract Type ModelType { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Represents the <see cref="ModelBinding.OperationBindingContext"/> associated with this context.
|
||||
/// </summary>
|
||||
public abstract OperationBindingContext OperationBindingContext { get; set; }
|
||||
public virtual Type ModelType => ModelMetadata.ModelType;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a predicate which will be evaluated for each property to determine if the property
|
||||
|
|
@ -82,6 +94,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// Gets or sets the <see cref="ValidationStateDictionary"/>. Used for tracking validation state to
|
||||
/// customize validation behavior for a model object.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The property setter is provided for unit testing purposes only.
|
||||
/// </remarks>
|
||||
public abstract ValidationStateDictionary ValidationState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -1,49 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||
{
|
||||
/// <summary>
|
||||
/// A context that contains information specific to the current request and the action whose parameters
|
||||
/// are being model bound.
|
||||
/// </summary>
|
||||
public class OperationBindingContext
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the <see cref="Mvc.ActionContext"/> for the current request.
|
||||
/// </summary>
|
||||
public ActionContext ActionContext { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the <see cref="Http.HttpContext"/> for the current request.
|
||||
/// </summary>
|
||||
public HttpContext HttpContext => ActionContext.HttpContext;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the set of <see cref="IInputFormatter"/> instances associated with this context.
|
||||
/// </summary>
|
||||
public IList<IInputFormatter> InputFormatters { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets unaltered value provider collection.
|
||||
/// Value providers can be filtered by specific model binders.
|
||||
/// </summary>
|
||||
public IValueProvider ValueProvider { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the <see cref="IModelMetadataProvider"/> associated with this context.
|
||||
/// </summary>
|
||||
public IModelMetadataProvider MetadataProvider { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the <see cref="IModelValidatorProvider"/> instance used for model validation with this
|
||||
/// context.
|
||||
/// </summary>
|
||||
public IModelValidatorProvider ValidatorProvider { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1121,9 +1121,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
MetadataProvider,
|
||||
ModelBinderFactory,
|
||||
valueProvider,
|
||||
ControllerContext.InputFormatters,
|
||||
ObjectValidator,
|
||||
new CompositeModelValidatorProvider(ControllerContext.ValidatorProviders));
|
||||
ObjectValidator);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -1161,9 +1159,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
MetadataProvider,
|
||||
ModelBinderFactory,
|
||||
new CompositeValueProvider(ControllerContext.ValueProviders),
|
||||
ControllerContext.InputFormatters,
|
||||
ObjectValidator,
|
||||
new CompositeModelValidatorProvider(ControllerContext.ValidatorProviders),
|
||||
includeExpressions);
|
||||
}
|
||||
|
||||
|
|
@ -1201,9 +1197,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
MetadataProvider,
|
||||
ModelBinderFactory,
|
||||
new CompositeValueProvider(ControllerContext.ValueProviders),
|
||||
ControllerContext.InputFormatters,
|
||||
ObjectValidator,
|
||||
new CompositeModelValidatorProvider(ControllerContext.ValidatorProviders),
|
||||
propertyFilter);
|
||||
}
|
||||
|
||||
|
|
@ -1249,9 +1243,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
MetadataProvider,
|
||||
ModelBinderFactory,
|
||||
valueProvider,
|
||||
ControllerContext.InputFormatters,
|
||||
ObjectValidator,
|
||||
new CompositeModelValidatorProvider(ControllerContext.ValidatorProviders),
|
||||
includeExpressions);
|
||||
}
|
||||
|
||||
|
|
@ -1296,9 +1288,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
MetadataProvider,
|
||||
ModelBinderFactory,
|
||||
valueProvider,
|
||||
ControllerContext.InputFormatters,
|
||||
ObjectValidator,
|
||||
new CompositeModelValidatorProvider(ControllerContext.ValidatorProviders),
|
||||
propertyFilter);
|
||||
}
|
||||
|
||||
|
|
@ -1335,9 +1325,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
MetadataProvider,
|
||||
ModelBinderFactory,
|
||||
new CompositeValueProvider(ControllerContext.ValueProviders),
|
||||
ControllerContext.InputFormatters,
|
||||
ObjectValidator,
|
||||
new CompositeModelValidatorProvider(ControllerContext.ValidatorProviders));
|
||||
ObjectValidator);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -1387,9 +1375,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
MetadataProvider,
|
||||
ModelBinderFactory,
|
||||
valueProvider,
|
||||
ControllerContext.InputFormatters,
|
||||
ObjectValidator,
|
||||
new CompositeModelValidatorProvider(ControllerContext.ValidatorProviders),
|
||||
propertyFilter);
|
||||
}
|
||||
|
||||
|
|
@ -1429,7 +1415,6 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
|
||||
ObjectValidator.Validate(
|
||||
ControllerContext,
|
||||
new CompositeModelValidatorProvider(ControllerContext.ValidatorProviders),
|
||||
validationState: null,
|
||||
prefix: prefix ?? string.Empty,
|
||||
model: model);
|
||||
|
|
|
|||
|
|
@ -5,9 +5,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Mvc.Controllers;
|
||||
using Microsoft.AspNetCore.Mvc.Core;
|
||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc
|
||||
{
|
||||
|
|
@ -16,8 +14,6 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
/// </summary>
|
||||
public class ControllerContext : ActionContext
|
||||
{
|
||||
private FormatterCollection<IInputFormatter> _inputFormatters;
|
||||
private IList<IModelValidatorProvider> _validatorProviders;
|
||||
private IList<IValueProvider> _valueProviders;
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -55,56 +51,6 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
set { base.ActionDescriptor = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the list of <see cref="IInputFormatter"/> instances for the current request.
|
||||
/// </summary>
|
||||
public virtual FormatterCollection<IInputFormatter> InputFormatters
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_inputFormatters == null)
|
||||
{
|
||||
_inputFormatters = new FormatterCollection<IInputFormatter>();
|
||||
}
|
||||
|
||||
return _inputFormatters;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
_inputFormatters = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the list of <see cref="IModelValidatorProvider"/> instances for the current request.
|
||||
/// </summary>
|
||||
public virtual IList<IModelValidatorProvider> ValidatorProviders
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_validatorProviders == null)
|
||||
{
|
||||
_validatorProviders = new List<IModelValidatorProvider>();
|
||||
}
|
||||
|
||||
return _validatorProviders;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
_validatorProviders = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the list of <see cref="IValueProvider"/> instances for the current request.
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -178,18 +178,22 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
ServiceDescriptor.Singleton<IFilterProvider, DefaultFilterProvider>());
|
||||
|
||||
//
|
||||
// ModelBinding, Validation and Formatting
|
||||
// ModelBinding, Validation
|
||||
//
|
||||
// The DefaultModelMetadataProvider does significant caching and should be a singleton.
|
||||
services.TryAddSingleton<IModelMetadataProvider, DefaultModelMetadataProvider>();
|
||||
services.TryAdd(ServiceDescriptor.Transient<ICompositeMetadataDetailsProvider>(serviceProvider =>
|
||||
services.TryAdd(ServiceDescriptor.Transient<ICompositeMetadataDetailsProvider>(s =>
|
||||
{
|
||||
var options = serviceProvider.GetRequiredService<IOptions<MvcOptions>>().Value;
|
||||
var options = s.GetRequiredService<IOptions<MvcOptions>>().Value;
|
||||
return new DefaultCompositeMetadataDetailsProvider(options.ModelMetadataDetailsProviders);
|
||||
}));
|
||||
services.TryAddSingleton<IModelBinderFactory, ModelBinderFactory>();
|
||||
services.TryAddSingleton<IObjectModelValidator, DefaultObjectValidator>();
|
||||
services.TryAddSingleton<ValidatorCache>();
|
||||
services.TryAddSingleton<IObjectModelValidator>(s =>
|
||||
{
|
||||
var options = s.GetRequiredService<IOptions<MvcOptions>>().Value;
|
||||
var metadataProvider = s.GetRequiredService<IModelMetadataProvider>();
|
||||
return new DefaultObjectValidator(metadataProvider, options.ModelValidatorProviders);
|
||||
});
|
||||
services.TryAddSingleton<ClientValidatorCache>();
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ using Microsoft.AspNetCore.Mvc.Core;
|
|||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||
using Microsoft.Extensions.Internal;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
|
|
@ -32,7 +31,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
ControllerActionDescriptor descriptor,
|
||||
IReadOnlyList<IInputFormatter> inputFormatters,
|
||||
IControllerActionArgumentBinder argumentBinder,
|
||||
IReadOnlyList<IModelValidatorProvider> modelValidatorProviders,
|
||||
IReadOnlyList<IValueProviderFactory> valueProviderFactories,
|
||||
ILogger logger,
|
||||
DiagnosticSource diagnosticSource,
|
||||
|
|
@ -41,7 +39,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
actionContext,
|
||||
controllerActionInvokerCache,
|
||||
inputFormatters,
|
||||
modelValidatorProviders,
|
||||
valueProviderFactories,
|
||||
logger,
|
||||
diagnosticSource,
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
private readonly IControllerFactory _controllerFactory;
|
||||
private readonly ControllerActionInvokerCache _controllerActionInvokerCache;
|
||||
private readonly IReadOnlyList<IInputFormatter> _inputFormatters;
|
||||
private readonly IReadOnlyList<IModelValidatorProvider> _modelValidatorProviders;
|
||||
private readonly IReadOnlyList<IValueProviderFactory> _valueProviderFactories;
|
||||
private readonly int _maxModelValidationErrors;
|
||||
private readonly ILogger _logger;
|
||||
|
|
@ -39,7 +38,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
_controllerActionInvokerCache = controllerActionInvokerCache;
|
||||
_argumentBinder = argumentBinder;
|
||||
_inputFormatters = optionsAccessor.Value.InputFormatters.ToArray();
|
||||
_modelValidatorProviders = optionsAccessor.Value.ModelValidatorProviders.ToArray();
|
||||
_valueProviderFactories = optionsAccessor.Value.ValueProviderFactories.ToArray();
|
||||
_maxModelValidationErrors = optionsAccessor.Value.MaxModelValidationErrors;
|
||||
_logger = loggerFactory.CreateLogger<ControllerActionInvoker>();
|
||||
|
|
@ -70,7 +68,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
actionDescriptor,
|
||||
_inputFormatters,
|
||||
_argumentBinder,
|
||||
_modelValidatorProviders,
|
||||
_valueProviderFactories,
|
||||
_logger,
|
||||
_diagnosticSource,
|
||||
|
|
|
|||
|
|
@ -39,12 +39,12 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
}
|
||||
|
||||
public Task<IDictionary<string, object>> BindActionArgumentsAsync(
|
||||
ControllerContext context,
|
||||
ControllerContext controllerContext,
|
||||
object controller)
|
||||
{
|
||||
if (context == null)
|
||||
if (controllerContext == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(context));
|
||||
throw new ArgumentNullException(nameof(controllerContext));
|
||||
}
|
||||
|
||||
if (controller == null)
|
||||
|
|
@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
throw new ArgumentNullException(nameof(controller));
|
||||
}
|
||||
|
||||
if (context.ActionDescriptor == null)
|
||||
if (controllerContext.ActionDescriptor == null)
|
||||
{
|
||||
throw new ArgumentException(Resources.FormatPropertyOfTypeCannotBeNull(
|
||||
nameof(ControllerContext.ActionDescriptor),
|
||||
|
|
@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
|
||||
// Perf: Avoid allocating async state machines where possible. We only need the state
|
||||
// machine if you need to bind properties.
|
||||
var actionDescriptor = context.ActionDescriptor;
|
||||
var actionDescriptor = controllerContext.ActionDescriptor;
|
||||
if (actionDescriptor.BoundProperties.Count == 0 &&
|
||||
actionDescriptor.Parameters.Count == 0)
|
||||
{
|
||||
|
|
@ -70,53 +70,51 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
}
|
||||
else if (actionDescriptor.BoundProperties.Count == 0)
|
||||
{
|
||||
var operationBindingContext = GetOperationBindingContext(context);
|
||||
return PopulateArgumentsAsync(operationBindingContext, actionDescriptor.Parameters);
|
||||
return PopulateArgumentsAsync(controllerContext, actionDescriptor.Parameters);
|
||||
}
|
||||
else
|
||||
{
|
||||
return BindActionArgumentsAndPropertiesCoreAsync(
|
||||
context,
|
||||
controllerContext,
|
||||
controller,
|
||||
actionDescriptor);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<IDictionary<string, object>> BindActionArgumentsAndPropertiesCoreAsync(
|
||||
ControllerContext context,
|
||||
ControllerContext controllerContext,
|
||||
object controller,
|
||||
ControllerActionDescriptor actionDescriptor)
|
||||
{
|
||||
var operationBindingContext = GetOperationBindingContext(context);
|
||||
|
||||
var controllerProperties = await PopulateArgumentsAsync(
|
||||
operationBindingContext,
|
||||
controllerContext,
|
||||
actionDescriptor.BoundProperties);
|
||||
ActivateProperties(actionDescriptor, controller, controllerProperties);
|
||||
|
||||
var actionArguments = await PopulateArgumentsAsync(
|
||||
operationBindingContext,
|
||||
controllerContext,
|
||||
actionDescriptor.Parameters);
|
||||
return actionArguments;
|
||||
}
|
||||
|
||||
public async Task<ModelBindingResult?> BindModelAsync(
|
||||
ParameterDescriptor parameter,
|
||||
OperationBindingContext operationContext)
|
||||
ControllerContext controllerContext)
|
||||
{
|
||||
if (parameter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(parameter));
|
||||
}
|
||||
|
||||
if (operationContext == null)
|
||||
if (controllerContext == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationContext));
|
||||
throw new ArgumentNullException(nameof(controllerContext));
|
||||
}
|
||||
|
||||
var metadata = _modelMetadataProvider.GetMetadataForType(parameter.ParameterType);
|
||||
var modelBindingContext = DefaultModelBindingContext.CreateBindingContext(
|
||||
operationContext,
|
||||
controllerContext,
|
||||
new CompositeValueProvider(controllerContext.ValueProviders),
|
||||
metadata,
|
||||
parameter.BindingInfo,
|
||||
parameter.Name);
|
||||
|
|
@ -150,8 +148,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
if (modelBindingResult != null && modelBindingResult.Value.IsModelSet)
|
||||
{
|
||||
_validator.Validate(
|
||||
operationContext.ActionContext,
|
||||
operationContext.ValidatorProvider,
|
||||
controllerContext,
|
||||
modelBindingContext.ValidationState,
|
||||
modelBindingResult.Value.Key,
|
||||
modelBindingResult.Value.Model);
|
||||
|
|
@ -243,16 +240,16 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
}
|
||||
|
||||
private async Task<IDictionary<string, object>> PopulateArgumentsAsync(
|
||||
OperationBindingContext operationContext,
|
||||
IList<ParameterDescriptor> parameterMetadata)
|
||||
ControllerContext controllerContext,
|
||||
IList<ParameterDescriptor> parameters)
|
||||
{
|
||||
var arguments = new Dictionary<string, object>(StringComparer.Ordinal);
|
||||
|
||||
// Perf: Avoid allocations
|
||||
for (var i = 0; i < parameterMetadata.Count; i++)
|
||||
for (var i = 0; i < parameters.Count; i++)
|
||||
{
|
||||
var parameter = parameterMetadata[i];
|
||||
var modelBindingResult = await BindModelAsync(parameter, operationContext);
|
||||
var parameter = parameters[i];
|
||||
var modelBindingResult = await BindModelAsync(parameter, controllerContext);
|
||||
if (modelBindingResult != null && modelBindingResult.Value.IsModelSet)
|
||||
{
|
||||
arguments[parameter.Name] = modelBindingResult.Value.Model;
|
||||
|
|
@ -261,17 +258,5 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
|
||||
return arguments;
|
||||
}
|
||||
|
||||
private OperationBindingContext GetOperationBindingContext(ControllerContext context)
|
||||
{
|
||||
return new OperationBindingContext
|
||||
{
|
||||
ActionContext = context,
|
||||
InputFormatters = context.InputFormatters,
|
||||
ValidatorProvider = new CompositeModelValidatorProvider(context.ValidatorProviders),
|
||||
MetadataProvider = _modelMetadataProvider,
|
||||
ValueProvider = new CompositeValueProvider(context.ValueProviders),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// </summary>
|
||||
public class DefaultModelBindingContext : ModelBindingContext
|
||||
{
|
||||
private OperationBindingContext _operationBindingContext;
|
||||
private IValueProvider _originalValueProvider;
|
||||
private ActionContext _actionContext;
|
||||
private ModelStateDictionary _modelState;
|
||||
private ValidationStateDictionary _validationState;
|
||||
|
||||
private State _state;
|
||||
private readonly Stack<State> _stack = new Stack<State>();
|
||||
|
|
@ -24,138 +27,17 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="DefaultModelBindingContext"/> for top-level model binding operation.
|
||||
/// </summary>
|
||||
/// <param name="operationBindingContext">
|
||||
/// The <see cref="OperationBindingContext"/> associated with the binding operation.
|
||||
/// </param>
|
||||
/// <param name="metadata"><see cref="ModelMetadata"/> associated with the model.</param>
|
||||
/// <param name="bindingInfo"><see cref="BindingInfo"/> associated with the model.</param>
|
||||
/// <param name="modelName">The name of the property or parameter being bound.</param>
|
||||
/// <returns>A new instance of <see cref="DefaultModelBindingContext"/>.</returns>
|
||||
public static ModelBindingContext CreateBindingContext(
|
||||
OperationBindingContext operationBindingContext,
|
||||
ModelMetadata metadata,
|
||||
BindingInfo bindingInfo,
|
||||
string modelName)
|
||||
{
|
||||
if (operationBindingContext == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationBindingContext));
|
||||
}
|
||||
|
||||
if (metadata == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(metadata));
|
||||
}
|
||||
|
||||
if (modelName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelName));
|
||||
}
|
||||
|
||||
var binderModelName = bindingInfo?.BinderModelName ?? metadata.BinderModelName;
|
||||
var propertyFilterProvider = bindingInfo?.PropertyFilterProvider ?? metadata.PropertyFilterProvider;
|
||||
|
||||
var valueProvider = operationBindingContext.ValueProvider;
|
||||
var bindingSource = bindingInfo?.BindingSource ?? metadata.BindingSource;
|
||||
if (bindingSource != null && !bindingSource.IsGreedy)
|
||||
{
|
||||
valueProvider = FilterValueProvider(operationBindingContext.ValueProvider, bindingSource);
|
||||
}
|
||||
|
||||
return new DefaultModelBindingContext()
|
||||
{
|
||||
BinderModelName = binderModelName,
|
||||
BindingSource = bindingSource,
|
||||
PropertyFilter = propertyFilterProvider?.PropertyFilter,
|
||||
|
||||
// Because this is the top-level context, FieldName and ModelName should be the same.
|
||||
FieldName = binderModelName ?? modelName,
|
||||
ModelName = binderModelName ?? modelName,
|
||||
|
||||
IsTopLevelObject = true,
|
||||
ModelMetadata = metadata,
|
||||
ModelState = operationBindingContext.ActionContext.ModelState,
|
||||
OperationBindingContext = operationBindingContext,
|
||||
ValueProvider = valueProvider,
|
||||
|
||||
ValidationState = new ValidationStateDictionary(),
|
||||
};
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override NestedScope EnterNestedScope(
|
||||
ModelMetadata modelMetadata,
|
||||
string fieldName,
|
||||
string modelName,
|
||||
object model)
|
||||
public override ActionContext ActionContext
|
||||
{
|
||||
if (modelMetadata == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelMetadata));
|
||||
}
|
||||
|
||||
if (fieldName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(fieldName));
|
||||
}
|
||||
|
||||
if (modelName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelName));
|
||||
}
|
||||
|
||||
var scope = EnterNestedScope();
|
||||
|
||||
// Only filter if the new BindingSource affects the value providers. Otherwise we want
|
||||
// to preserve the currrent state.
|
||||
if (modelMetadata.BindingSource != null && !modelMetadata.BindingSource.IsGreedy)
|
||||
{
|
||||
ValueProvider = FilterValueProvider(_operationBindingContext.ValueProvider, modelMetadata.BindingSource);
|
||||
}
|
||||
|
||||
Model = model;
|
||||
ModelMetadata = modelMetadata;
|
||||
ModelName = modelName;
|
||||
FieldName = fieldName;
|
||||
BinderModelName = modelMetadata.BinderModelName;
|
||||
BindingSource = modelMetadata.BindingSource;
|
||||
PropertyFilter = modelMetadata.PropertyFilterProvider?.PropertyFilter;
|
||||
|
||||
IsTopLevelObject = false;
|
||||
|
||||
return scope;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override NestedScope EnterNestedScope()
|
||||
{
|
||||
_stack.Push(_state);
|
||||
|
||||
Result = null;
|
||||
|
||||
return new NestedScope(this);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void ExitNestedScope()
|
||||
{
|
||||
_state = _stack.Pop();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override OperationBindingContext OperationBindingContext
|
||||
{
|
||||
get { return _operationBindingContext; }
|
||||
get { return _actionContext; }
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
_operationBindingContext = value;
|
||||
_actionContext = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -211,20 +93,17 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// <inheritdoc />
|
||||
public override ModelStateDictionary ModelState
|
||||
{
|
||||
get { return _state.ModelState; }
|
||||
get { return _modelState; }
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
_state.ModelState = value;
|
||||
_modelState = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override Type ModelType => ModelMetadata?.ModelType;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string BinderModelName
|
||||
{
|
||||
|
|
@ -246,6 +125,22 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
set { _state.IsTopLevelObject = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the original value provider to be used when value providers are not filtered.
|
||||
/// </summary>
|
||||
public IValueProvider OriginalValueProvider
|
||||
{
|
||||
get { return _originalValueProvider; }
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
_originalValueProvider = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override IValueProvider ValueProvider
|
||||
{
|
||||
|
|
@ -270,8 +165,15 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// <inheritdoc />
|
||||
public override ValidationStateDictionary ValidationState
|
||||
{
|
||||
get { return _state.ValidationState; }
|
||||
set { _state.ValidationState = value; }
|
||||
get { return _validationState; }
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
_validationState = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
|
@ -292,6 +194,131 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="DefaultModelBindingContext"/> for top-level model binding operation.
|
||||
/// </summary>
|
||||
/// <param name="actionContext">
|
||||
/// The <see cref="ActionContext"/> associated with the binding operation.
|
||||
/// </param>
|
||||
/// <param name="valueProvider">The <see cref="IValueProvider"/> to use for binding.</param>
|
||||
/// <param name="metadata"><see cref="ModelMetadata"/> associated with the model.</param>
|
||||
/// <param name="bindingInfo"><see cref="BindingInfo"/> associated with the model.</param>
|
||||
/// <param name="modelName">The name of the property or parameter being bound.</param>
|
||||
/// <returns>A new instance of <see cref="DefaultModelBindingContext"/>.</returns>
|
||||
public static ModelBindingContext CreateBindingContext(
|
||||
ActionContext actionContext,
|
||||
IValueProvider valueProvider,
|
||||
ModelMetadata metadata,
|
||||
BindingInfo bindingInfo,
|
||||
string modelName)
|
||||
{
|
||||
if (actionContext == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(actionContext));
|
||||
}
|
||||
|
||||
if (valueProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(valueProvider));
|
||||
}
|
||||
|
||||
if (metadata == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(metadata));
|
||||
}
|
||||
|
||||
if (modelName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelName));
|
||||
}
|
||||
|
||||
var binderModelName = bindingInfo?.BinderModelName ?? metadata.BinderModelName;
|
||||
var propertyFilterProvider = bindingInfo?.PropertyFilterProvider ?? metadata.PropertyFilterProvider;
|
||||
|
||||
var bindingSource = bindingInfo?.BindingSource ?? metadata.BindingSource;
|
||||
|
||||
return new DefaultModelBindingContext()
|
||||
{
|
||||
ActionContext = actionContext,
|
||||
BinderModelName = binderModelName,
|
||||
BindingSource = bindingSource,
|
||||
PropertyFilter = propertyFilterProvider?.PropertyFilter,
|
||||
|
||||
// Because this is the top-level context, FieldName and ModelName should be the same.
|
||||
FieldName = binderModelName ?? modelName,
|
||||
ModelName = binderModelName ?? modelName,
|
||||
|
||||
IsTopLevelObject = true,
|
||||
ModelMetadata = metadata,
|
||||
ModelState = actionContext.ModelState,
|
||||
|
||||
OriginalValueProvider = valueProvider,
|
||||
ValueProvider = FilterValueProvider(valueProvider, bindingSource),
|
||||
|
||||
ValidationState = new ValidationStateDictionary(),
|
||||
};
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override NestedScope EnterNestedScope(
|
||||
ModelMetadata modelMetadata,
|
||||
string fieldName,
|
||||
string modelName,
|
||||
object model)
|
||||
{
|
||||
if (modelMetadata == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelMetadata));
|
||||
}
|
||||
|
||||
if (fieldName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(fieldName));
|
||||
}
|
||||
|
||||
if (modelName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelName));
|
||||
}
|
||||
|
||||
var scope = EnterNestedScope();
|
||||
|
||||
// Only filter if the new BindingSource affects the value providers. Otherwise we want
|
||||
// to preserve the currrent state.
|
||||
if (modelMetadata.BindingSource != null && !modelMetadata.BindingSource.IsGreedy)
|
||||
{
|
||||
ValueProvider = FilterValueProvider(OriginalValueProvider, modelMetadata.BindingSource);
|
||||
}
|
||||
|
||||
Model = model;
|
||||
ModelMetadata = modelMetadata;
|
||||
ModelName = modelName;
|
||||
FieldName = fieldName;
|
||||
BinderModelName = modelMetadata.BinderModelName;
|
||||
BindingSource = modelMetadata.BindingSource;
|
||||
PropertyFilter = modelMetadata.PropertyFilterProvider?.PropertyFilter;
|
||||
|
||||
IsTopLevelObject = false;
|
||||
|
||||
return scope;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override NestedScope EnterNestedScope()
|
||||
{
|
||||
_stack.Push(_state);
|
||||
|
||||
Result = null;
|
||||
|
||||
return new NestedScope(this);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void ExitNestedScope()
|
||||
{
|
||||
_state = _stack.Pop();
|
||||
}
|
||||
|
||||
private static IValueProvider FilterValueProvider(IValueProvider valueProvider, BindingSource bindingSource)
|
||||
{
|
||||
if (bindingSource == null || bindingSource.IsGreedy)
|
||||
|
|
@ -317,8 +344,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
|
||||
public IValueProvider ValueProvider;
|
||||
public Func<ModelMetadata, bool> PropertyFilter;
|
||||
public ValidationStateDictionary ValidationState;
|
||||
public ModelStateDictionary ModelState;
|
||||
|
||||
public string BinderModelName;
|
||||
public BindingSource BindingSource;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||
|
||||
|
|
@ -14,34 +15,36 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
{
|
||||
private readonly IModelMetadataProvider _modelMetadataProvider;
|
||||
private readonly ValidatorCache _validatorCache;
|
||||
private readonly IModelValidatorProvider _validatorProvider;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of <see cref="DefaultObjectValidator"/>.
|
||||
/// </summary>
|
||||
/// <param name="modelMetadataProvider">The <see cref="IModelMetadataProvider"/>.</param>
|
||||
/// <param name="validatorCache">The <see cref="ValidatorCache"/>.</param>
|
||||
/// <param name="validatorProviders">The list of <see cref="IModelValidatorProvider"/>.</param>
|
||||
public DefaultObjectValidator(
|
||||
IModelMetadataProvider modelMetadataProvider,
|
||||
ValidatorCache validatorCache)
|
||||
IList<IModelValidatorProvider> validatorProviders)
|
||||
{
|
||||
if (modelMetadataProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelMetadataProvider));
|
||||
}
|
||||
|
||||
if (validatorCache == null)
|
||||
if (validatorProviders == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(validatorCache));
|
||||
throw new ArgumentNullException(nameof(validatorProviders));
|
||||
}
|
||||
|
||||
_modelMetadataProvider = modelMetadataProvider;
|
||||
_validatorCache = validatorCache;
|
||||
_validatorCache = new ValidatorCache();
|
||||
|
||||
_validatorProvider = new CompositeModelValidatorProvider(validatorProviders);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void Validate(
|
||||
ActionContext actionContext,
|
||||
IModelValidatorProvider validatorProvider,
|
||||
ValidationStateDictionary validationState,
|
||||
string prefix,
|
||||
object model)
|
||||
|
|
@ -51,14 +54,9 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
throw new ArgumentNullException(nameof(actionContext));
|
||||
}
|
||||
|
||||
if (validatorProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(validatorProvider));
|
||||
}
|
||||
|
||||
var visitor = new ValidationVisitor(
|
||||
actionContext,
|
||||
validatorProvider,
|
||||
_validatorProvider,
|
||||
_validatorCache,
|
||||
_modelMetadataProvider,
|
||||
validationState);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
{
|
||||
private readonly ControllerActionInvokerCache _controllerActionInvokerCache;
|
||||
private readonly IReadOnlyList<IInputFormatter> _inputFormatters;
|
||||
private readonly IReadOnlyList<IModelValidatorProvider> _modelValidatorProviders;
|
||||
private readonly IReadOnlyList<IValueProviderFactory> _valueProviderFactories;
|
||||
private readonly DiagnosticSource _diagnosticSource;
|
||||
private readonly int _maxModelValidationErrors;
|
||||
|
|
@ -46,7 +45,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
ActionContext actionContext,
|
||||
ControllerActionInvokerCache controllerActionInvokerCache,
|
||||
IReadOnlyList<IInputFormatter> inputFormatters,
|
||||
IReadOnlyList<IModelValidatorProvider> modelValidatorProviders,
|
||||
IReadOnlyList<IValueProviderFactory> valueProviderFactories,
|
||||
ILogger logger,
|
||||
DiagnosticSource diagnosticSource,
|
||||
|
|
@ -67,11 +65,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
throw new ArgumentNullException(nameof(inputFormatters));
|
||||
}
|
||||
|
||||
if (modelValidatorProviders == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelValidatorProviders));
|
||||
}
|
||||
|
||||
if (valueProviderFactories == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(valueProviderFactories));
|
||||
|
|
@ -91,7 +84,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
|
||||
_controllerActionInvokerCache = controllerActionInvokerCache;
|
||||
_inputFormatters = inputFormatters;
|
||||
_modelValidatorProviders = modelValidatorProviders;
|
||||
_valueProviderFactories = valueProviderFactories;
|
||||
Logger = logger;
|
||||
_diagnosticSource = diagnosticSource;
|
||||
|
|
@ -346,10 +338,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
{
|
||||
// We've reached the end of resource filters, so move to setting up state to invoke model
|
||||
// binding.
|
||||
Context.InputFormatters = new FormatterCollection<IInputFormatter>(
|
||||
new CopyOnWriteList<IInputFormatter>(_inputFormatters));
|
||||
Context.ValidatorProviders = new CopyOnWriteList<IModelValidatorProvider>(_modelValidatorProviders);
|
||||
|
||||
var valueProviders = new List<IValueProvider>();
|
||||
var factoryContext = new ValueProviderFactoryContext(Context);
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
// Set up ModelBinding
|
||||
options.ModelBinderProviders.Add(new BinderTypeModelBinderProvider());
|
||||
options.ModelBinderProviders.Add(new ServicesModelBinderProvider());
|
||||
options.ModelBinderProviders.Add(new BodyModelBinderProvider(_readerFactory));
|
||||
options.ModelBinderProviders.Add(new BodyModelBinderProvider(options.InputFormatters, _readerFactory));
|
||||
options.ModelBinderProviders.Add(new HeaderModelBinderProvider());
|
||||
options.ModelBinderProviders.Add(new SimpleTypeModelBinderProvider());
|
||||
options.ModelBinderProviders.Add(new CancellationTokenModelBinderProvider());
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
throw new ArgumentNullException(nameof(bindingContext));
|
||||
}
|
||||
|
||||
var requestServices = bindingContext.OperationBindingContext.HttpContext.RequestServices;
|
||||
var requestServices = bindingContext.HttpContext.RequestServices;
|
||||
var binder = (IModelBinder)_factory(requestServices, arguments: null);
|
||||
|
||||
await binder.BindModelAsync(bindingContext);
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc.Core;
|
||||
|
|
@ -18,17 +18,30 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
/// </summary>
|
||||
public class BodyModelBinder : IModelBinder
|
||||
{
|
||||
private readonly IList<IInputFormatter> _formatters;
|
||||
private readonly Func<Stream, Encoding, TextReader> _readerFactory;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="BodyModelBinder"/>.
|
||||
/// </summary>
|
||||
/// <param name="formatters">The list of <see cref="IInputFormatter"/>.</param>
|
||||
/// <param name="readerFactory">
|
||||
/// The <see cref="IHttpRequestStreamReaderFactory"/>, used to create <see cref="System.IO.TextReader"/>
|
||||
/// instances for reading the request body.
|
||||
/// </param>
|
||||
public BodyModelBinder(IHttpRequestStreamReaderFactory readerFactory)
|
||||
public BodyModelBinder(IList<IInputFormatter> formatters, IHttpRequestStreamReaderFactory readerFactory)
|
||||
{
|
||||
if (formatters == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatters));
|
||||
}
|
||||
|
||||
if (readerFactory == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(readerFactory));
|
||||
}
|
||||
|
||||
_formatters = formatters;
|
||||
_readerFactory = readerFactory.CreateReader;
|
||||
}
|
||||
|
||||
|
|
@ -53,7 +66,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
modelBindingKey = bindingContext.ModelName;
|
||||
}
|
||||
|
||||
var httpContext = bindingContext.OperationBindingContext.HttpContext;
|
||||
var httpContext = bindingContext.HttpContext;
|
||||
|
||||
var formatterContext = new InputFormatterContext(
|
||||
httpContext,
|
||||
|
|
@ -62,13 +75,19 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
bindingContext.ModelMetadata,
|
||||
_readerFactory);
|
||||
|
||||
var formatters = bindingContext.OperationBindingContext.InputFormatters;
|
||||
var formatter = formatters.FirstOrDefault(f => f.CanRead(formatterContext));
|
||||
var formatter = (IInputFormatter)null;
|
||||
for (var i = 0; i < _formatters.Count; i++)
|
||||
{
|
||||
if (_formatters[i].CanRead(formatterContext))
|
||||
{
|
||||
formatter = _formatters[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (formatter == null)
|
||||
{
|
||||
var message = Resources.FormatUnsupportedContentType(
|
||||
bindingContext.OperationBindingContext.HttpContext.Request.ContentType);
|
||||
var message = Resources.FormatUnsupportedContentType(httpContext.Request.ContentType);
|
||||
|
||||
var exception = new UnsupportedContentTypeException(message);
|
||||
bindingContext.ModelState.AddModelError(modelBindingKey, exception, bindingContext.ModelMetadata);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.AspNetCore.Mvc.Internal;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
||||
|
|
@ -11,19 +13,27 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
/// </summary>
|
||||
public class BodyModelBinderProvider : IModelBinderProvider
|
||||
{
|
||||
private readonly IList<IInputFormatter> _formatters;
|
||||
private readonly IHttpRequestStreamReaderFactory _readerFactory;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="BodyModelBinderProvider"/>.
|
||||
/// </summary>
|
||||
/// <param name="formatters">The list of <see cref="IInputFormatter"/>.</param>
|
||||
/// <param name="readerFactory">The <see cref="IHttpRequestStreamReaderFactory"/>.</param>
|
||||
public BodyModelBinderProvider(IHttpRequestStreamReaderFactory readerFactory)
|
||||
public BodyModelBinderProvider(IList<IInputFormatter> formatters, IHttpRequestStreamReaderFactory readerFactory)
|
||||
{
|
||||
if (formatters == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatters));
|
||||
}
|
||||
|
||||
if (readerFactory == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(readerFactory));
|
||||
}
|
||||
|
||||
_formatters = formatters;
|
||||
_readerFactory = readerFactory;
|
||||
}
|
||||
|
||||
|
|
@ -38,7 +48,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
if (context.BindingInfo?.BindingSource != null &&
|
||||
context.BindingInfo.BindingSource.CanAcceptDataFrom(BindingSource.Body))
|
||||
{
|
||||
return new BodyModelBinder(_readerFactory);
|
||||
return new BodyModelBinder(_formatters, _readerFactory);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// in both the ValidationState and ModelBindingResult.
|
||||
//
|
||||
// DO NOT simplify this code by removing the cast.
|
||||
var model = (object)bindingContext.OperationBindingContext.HttpContext.RequestAborted;
|
||||
var model = (object)bindingContext.HttpContext.RequestAborted;
|
||||
bindingContext.ValidationState.Add(model, new ValidationStateEntry() { SuppressValidation = true });
|
||||
bindingContext.Result = ModelBindingResult.Success(bindingContext.ModelName, model);
|
||||
|
||||
|
|
|
|||
|
|
@ -158,10 +158,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
ValueProviderResult values)
|
||||
{
|
||||
var boundCollection = new List<TElement>();
|
||||
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var elementMetadata = metadataProvider.GetMetadataForType(typeof(TElement));
|
||||
|
||||
|
||||
var elementMetadata = bindingContext.ModelMetadata.ElementMetadata;
|
||||
|
||||
foreach (var value in values)
|
||||
{
|
||||
|
|
@ -223,8 +221,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
.Select(i => i.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var elementMetadata = metadataProvider.GetMetadataForType(typeof(TElement));
|
||||
var elementMetadata = bindingContext.ModelMetadata.ElementMetadata;
|
||||
|
||||
var boundCollection = new List<TElement>();
|
||||
|
||||
|
|
|
|||
|
|
@ -252,8 +252,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
modelName: modelName,
|
||||
model: null))
|
||||
{
|
||||
// If any property can return a true value.
|
||||
if (CanBindValue(bindingContext))
|
||||
// If any property can be bound from a value provider then continue.
|
||||
if (bindingContext.ValueProvider.ContainsPrefix(bindingContext.ModelName))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
@ -271,33 +271,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
return false;
|
||||
}
|
||||
|
||||
private bool CanBindValue(ModelBindingContext bindingContext)
|
||||
{
|
||||
var valueProvider = bindingContext.ValueProvider;
|
||||
|
||||
var bindingSource = bindingContext.BindingSource;
|
||||
if (bindingSource != null && !bindingSource.IsGreedy)
|
||||
{
|
||||
var rootValueProvider = bindingContext.OperationBindingContext.ValueProvider as IBindingSourceValueProvider;
|
||||
if (rootValueProvider != null)
|
||||
{
|
||||
valueProvider = rootValueProvider.Filter(bindingSource);
|
||||
if (valueProvider == null)
|
||||
{
|
||||
// Unable to find a value provider for this binding source. Binding will fail.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (valueProvider.ContainsPrefix(bindingContext.ModelName))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Internal for tests
|
||||
internal static bool CanUpdatePropertyInternal(ModelMetadata propertyMetadata)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -81,8 +81,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
}
|
||||
|
||||
// Update the existing successful but empty ModelBindingResult.
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var valueMetadata = metadataProvider.GetMetadataForType(typeof(TValue));
|
||||
var elementMetadata = bindingContext.ModelMetadata.ElementMetadata;
|
||||
var valueMetadata = elementMetadata.Properties[nameof(KeyValuePair<TKey, TValue>.Value)];
|
||||
|
||||
var keyMappings = new Dictionary<string, TKey>(StringComparer.Ordinal);
|
||||
foreach (var kvp in keys)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
}
|
||||
|
||||
object model;
|
||||
var request = bindingContext.OperationBindingContext.HttpContext.Request;
|
||||
var request = bindingContext.HttpContext.Request;
|
||||
if (request.HasFormContentType)
|
||||
{
|
||||
var form = await request.ReadFormAsync();
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
ModelBindingContext bindingContext,
|
||||
ICollection<IFormFile> postedFiles)
|
||||
{
|
||||
var request = bindingContext.OperationBindingContext.HttpContext.Request;
|
||||
var request = bindingContext.HttpContext.Request;
|
||||
if (request.HasFormContentType)
|
||||
{
|
||||
var form = await request.ReadFormAsync();
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
throw new ArgumentNullException(nameof(bindingContext));
|
||||
}
|
||||
|
||||
var request = bindingContext.OperationBindingContext.HttpContext.Request;
|
||||
var request = bindingContext.HttpContext.Request;
|
||||
|
||||
// Property name can be null if the model metadata represents a type (rather than a property or parameter).
|
||||
var headerName = bindingContext.FieldName;
|
||||
|
|
|
|||
|
|
@ -97,10 +97,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
IModelBinder binder,
|
||||
string propertyName)
|
||||
{
|
||||
var propertyModelMetadata =
|
||||
bindingContext.OperationBindingContext.MetadataProvider.GetMetadataForType(typeof(TModel));
|
||||
var propertyModelName =
|
||||
ModelNames.CreatePropertyModelName(bindingContext.ModelName, propertyName);
|
||||
var propertyModelMetadata = bindingContext.ModelMetadata.Properties[propertyName];
|
||||
var propertyModelName = ModelNames.CreatePropertyModelName(bindingContext.ModelName, propertyName);
|
||||
|
||||
using (bindingContext.EnterNestedScope(
|
||||
modelMetadata: propertyModelMetadata,
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
throw new ArgumentNullException(nameof(bindingContext));
|
||||
}
|
||||
|
||||
var requestServices = bindingContext.OperationBindingContext.HttpContext.RequestServices;
|
||||
var requestServices = bindingContext.HttpContext.RequestServices;
|
||||
var model = requestServices.GetRequiredService(bindingContext.ModelType);
|
||||
|
||||
bindingContext.ValidationState.Add(model, new ValidationStateEntry() { SuppressValidation = true });
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ using System.Reflection;
|
|||
using System.Runtime.ExceptionServices;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc.Core;
|
||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||
|
|
@ -22,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// <summary>
|
||||
/// Updates the specified <paramref name="model"/> instance using the specified
|
||||
/// <paramref name="modelBinderFactory"/> and the specified <paramref name="valueProvider"/> and executes
|
||||
/// validation using the specified <paramref name="validatorProvider"/>.
|
||||
/// validation using the specified <paramref name="objectModelValidator"/>.
|
||||
/// </summary>
|
||||
/// <typeparam name="TModel">The type of the model object.</typeparam>
|
||||
/// <param name="model">The model instance to update and validate.</param>
|
||||
|
|
@ -32,13 +31,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// <param name="metadataProvider">The provider used for reading metadata for the model type.</param>
|
||||
/// <param name="modelBinderFactory">The <see cref="IModelBinderFactory"/> used for binding.</param>
|
||||
/// <param name="valueProvider">The <see cref="IValueProvider"/> used for looking up values.</param>
|
||||
/// <param name="inputFormatters">
|
||||
/// The set of <see cref="IInputFormatter"/> instances for deserializing the body.
|
||||
/// </param>
|
||||
/// <param name="objectModelValidator">The <see cref="IObjectModelValidator"/> used for validating the
|
||||
/// bound values.</param>
|
||||
/// <param name="validatorProvider">The <see cref="IModelValidatorProvider"/> used for executing validation
|
||||
/// on the model instance.</param>
|
||||
/// <returns>A <see cref="Task"/> that on completion returns <c>true</c> if the update is successful</returns>
|
||||
public static Task<bool> TryUpdateModelAsync<TModel>(
|
||||
TModel model,
|
||||
|
|
@ -47,9 +41,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
IModelMetadataProvider metadataProvider,
|
||||
IModelBinderFactory modelBinderFactory,
|
||||
IValueProvider valueProvider,
|
||||
IList<IInputFormatter> inputFormatters,
|
||||
IObjectModelValidator objectModelValidator,
|
||||
IModelValidatorProvider validatorProvider)
|
||||
IObjectModelValidator objectModelValidator)
|
||||
where TModel : class
|
||||
{
|
||||
if (model == null)
|
||||
|
|
@ -82,21 +74,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
throw new ArgumentNullException(nameof(valueProvider));
|
||||
}
|
||||
|
||||
if (inputFormatters == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(inputFormatters));
|
||||
}
|
||||
|
||||
if (objectModelValidator == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(objectModelValidator));
|
||||
}
|
||||
|
||||
if (validatorProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(validatorProvider));
|
||||
}
|
||||
|
||||
// Includes everything by default.
|
||||
return TryUpdateModelAsync(
|
||||
model,
|
||||
|
|
@ -105,16 +87,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
modelBinderFactory,
|
||||
valueProvider,
|
||||
inputFormatters,
|
||||
objectModelValidator,
|
||||
validatorProvider,
|
||||
propertyFilter: (m) => true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the specified <paramref name="model"/> instance using the specified <paramref name="modelBinderFactory"/>
|
||||
/// and the specified <paramref name="valueProvider"/> and executes validation using the specified
|
||||
/// <paramref name="validatorProvider"/>.
|
||||
/// <paramref name="objectModelValidator"/>.
|
||||
/// </summary>
|
||||
/// <typeparam name="TModel">The type of the model object.</typeparam>
|
||||
/// <param name="model">The model instance to update and validate.</param>
|
||||
|
|
@ -124,14 +104,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// <param name="metadataProvider">The provider used for reading metadata for the model type.</param>
|
||||
/// <param name="modelBinderFactory">The <see cref="IModelBinderFactory"/> used for binding.</param>
|
||||
/// <param name="valueProvider">The <see cref="IValueProvider"/> used for looking up values.</param>
|
||||
/// <param name="inputFormatters">
|
||||
/// The set of <see cref="IInputFormatter"/> instances for deserializing the body.
|
||||
/// </param>
|
||||
/// <param name="objectModelValidator">The <see cref="IObjectModelValidator"/> used for validating the
|
||||
/// bound values.</param>
|
||||
/// <param name="validatorProvider">The <see cref="IModelValidatorProvider"/> used for executing validation
|
||||
/// on the model
|
||||
/// instance.</param>
|
||||
/// <param name="includeExpressions">Expression(s) which represent top level properties
|
||||
/// which need to be included for the current model.</param>
|
||||
/// <returns>A <see cref="Task"/> that on completion returns <c>true</c> if the update is successful</returns>
|
||||
|
|
@ -142,9 +116,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
IModelMetadataProvider metadataProvider,
|
||||
IModelBinderFactory modelBinderFactory,
|
||||
IValueProvider valueProvider,
|
||||
IList<IInputFormatter> inputFormatters,
|
||||
IObjectModelValidator objectModelValidator,
|
||||
IModelValidatorProvider validatorProvider,
|
||||
params Expression<Func<TModel, object>>[] includeExpressions)
|
||||
where TModel : class
|
||||
{
|
||||
|
|
@ -178,21 +150,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
throw new ArgumentNullException(nameof(valueProvider));
|
||||
}
|
||||
|
||||
if (inputFormatters == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(inputFormatters));
|
||||
}
|
||||
|
||||
if (objectModelValidator == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(objectModelValidator));
|
||||
}
|
||||
|
||||
if (validatorProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(validatorProvider));
|
||||
}
|
||||
|
||||
if (includeExpressions == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(includeExpressions));
|
||||
|
|
@ -208,16 +170,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
modelBinderFactory,
|
||||
valueProvider,
|
||||
inputFormatters,
|
||||
objectModelValidator,
|
||||
validatorProvider,
|
||||
propertyFilter: propertyFilter);
|
||||
propertyFilter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the specified <paramref name="model"/> instance using the specified <paramref name="modelBinderFactory"/>
|
||||
/// and the specified <paramref name="valueProvider"/> and executes validation using the specified
|
||||
/// <paramref name="validatorProvider"/>.
|
||||
/// <paramref name="objectModelValidator"/>.
|
||||
/// </summary>
|
||||
/// <typeparam name="TModel">The type of the model object.</typeparam>
|
||||
/// <param name="model">The model instance to update and validate.</param>
|
||||
|
|
@ -227,13 +187,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// <param name="metadataProvider">The provider used for reading metadata for the model type.</param>
|
||||
/// <param name="modelBinderFactory">The <see cref="IModelBinderFactory"/> used for binding.</param>
|
||||
/// <param name="valueProvider">The <see cref="IValueProvider"/> used for looking up values.</param>
|
||||
/// <param name="inputFormatters">
|
||||
/// The set of <see cref="IInputFormatter"/> instances for deserializing the body.
|
||||
/// </param>
|
||||
/// <param name="objectModelValidator">The <see cref="IObjectModelValidator"/> used for validating the
|
||||
/// bound values.</param>
|
||||
/// <param name="validatorProvider">The <see cref="IModelValidatorProvider"/> used for executing validation
|
||||
/// on the model instance.</param>
|
||||
/// <param name="propertyFilter">
|
||||
/// A predicate which can be used to filter properties(for inclusion/exclusion) at runtime.
|
||||
/// </param>
|
||||
|
|
@ -245,9 +200,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
IModelMetadataProvider metadataProvider,
|
||||
IModelBinderFactory modelBinderFactory,
|
||||
IValueProvider valueProvider,
|
||||
IList<IInputFormatter> inputFormatters,
|
||||
IObjectModelValidator objectModelValidator,
|
||||
IModelValidatorProvider validatorProvider,
|
||||
Func<ModelMetadata, bool> propertyFilter)
|
||||
where TModel : class
|
||||
{
|
||||
|
|
@ -281,21 +234,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
throw new ArgumentNullException(nameof(valueProvider));
|
||||
}
|
||||
|
||||
if (inputFormatters == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(inputFormatters));
|
||||
}
|
||||
|
||||
if (objectModelValidator == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(objectModelValidator));
|
||||
}
|
||||
|
||||
if (validatorProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(validatorProvider));
|
||||
}
|
||||
|
||||
if (propertyFilter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(propertyFilter));
|
||||
|
|
@ -309,16 +252,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
modelBinderFactory,
|
||||
valueProvider,
|
||||
inputFormatters,
|
||||
objectModelValidator,
|
||||
validatorProvider,
|
||||
propertyFilter: propertyFilter);
|
||||
propertyFilter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the specified <paramref name="model"/> instance using the specified <paramref name="modelBinderFactory"/>
|
||||
/// and the specified <paramref name="valueProvider"/> and executes validation using the specified
|
||||
/// <paramref name="validatorProvider"/>.
|
||||
/// <paramref name="objectModelValidator"/>.
|
||||
/// </summary>
|
||||
/// <param name="model">The model instance to update and validate.</param>
|
||||
/// <param name="modelType">The type of model instance to update and validate.</param>
|
||||
|
|
@ -328,25 +269,18 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// <param name="metadataProvider">The provider used for reading metadata for the model type.</param>
|
||||
/// <param name="modelBinderFactory">The <see cref="IModelBinderFactory"/> used for binding.</param>
|
||||
/// <param name="valueProvider">The <see cref="IValueProvider"/> used for looking up values.</param>
|
||||
/// <param name="inputFormatters">
|
||||
/// The set of <see cref="IInputFormatter"/> instances for deserializing the body.
|
||||
/// </param>
|
||||
/// <param name="objectModelValidator">The <see cref="IObjectModelValidator"/> used for validating the
|
||||
/// bound values.</param>
|
||||
/// <param name="validatorProvider">The <see cref="IModelValidatorProvider"/> used for executing validation
|
||||
/// on the model instance.</param>
|
||||
/// <returns>A <see cref="Task"/> that on completion returns <c>true</c> if the update is successful</returns>
|
||||
public static Task<bool> TryUpdateModelAsync(
|
||||
object model,
|
||||
Type modelType,
|
||||
string prefix,
|
||||
ActionContext actionContext,
|
||||
IModelMetadataProvider metadataProvider,
|
||||
IModelBinderFactory modelBinderFactory,
|
||||
IValueProvider valueProvider,
|
||||
IList<IInputFormatter> inputFormatters,
|
||||
IObjectModelValidator objectModelValidator,
|
||||
IModelValidatorProvider validatorProvider)
|
||||
object model,
|
||||
Type modelType,
|
||||
string prefix,
|
||||
ActionContext actionContext,
|
||||
IModelMetadataProvider metadataProvider,
|
||||
IModelBinderFactory modelBinderFactory,
|
||||
IValueProvider valueProvider,
|
||||
IObjectModelValidator objectModelValidator)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
|
|
@ -383,21 +317,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
throw new ArgumentNullException(nameof(valueProvider));
|
||||
}
|
||||
|
||||
if (inputFormatters == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(inputFormatters));
|
||||
}
|
||||
|
||||
if (objectModelValidator == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(objectModelValidator));
|
||||
}
|
||||
|
||||
if (validatorProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(validatorProvider));
|
||||
}
|
||||
|
||||
// Includes everything by default.
|
||||
return TryUpdateModelAsync(
|
||||
model,
|
||||
|
|
@ -407,16 +331,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
modelBinderFactory,
|
||||
valueProvider,
|
||||
inputFormatters,
|
||||
objectModelValidator,
|
||||
validatorProvider,
|
||||
propertyFilter: (m) => true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the specified <paramref name="model"/> instance using the specified <paramref name="modelBinderFactory"/>
|
||||
/// and the specified <paramref name="valueProvider"/> and executes validation using the specified
|
||||
/// <paramref name="validatorProvider"/>.
|
||||
/// <paramref name="objectModelValidator"/>.
|
||||
/// </summary>
|
||||
/// <param name="model">The model instance to update and validate.</param>
|
||||
/// <param name="modelType">The type of model instance to update and validate.</param>
|
||||
|
|
@ -426,13 +348,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
/// <param name="metadataProvider">The provider used for reading metadata for the model type.</param>
|
||||
/// <param name="modelBinderFactory">The <see cref="IModelBinderFactory"/> used for binding.</param>
|
||||
/// <param name="valueProvider">The <see cref="IValueProvider"/> used for looking up values.</param>
|
||||
/// <param name="inputFormatters">
|
||||
/// The set of <see cref="IInputFormatter"/> instances for deserializing the body.
|
||||
/// </param>
|
||||
/// <param name="objectModelValidator">The <see cref="IObjectModelValidator"/> used for validating the
|
||||
/// bound values.</param>
|
||||
/// <param name="validatorProvider">The <see cref="IModelValidatorProvider"/> used for executing validation
|
||||
/// on the model instance.</param>
|
||||
/// <param name="propertyFilter">A predicate which can be used to
|
||||
/// filter properties(for inclusion/exclusion) at runtime.</param>
|
||||
/// <returns>A <see cref="Task"/> that on completion returns <c>true</c> if the update is successful</returns>
|
||||
|
|
@ -444,9 +361,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
IModelMetadataProvider metadataProvider,
|
||||
IModelBinderFactory modelBinderFactory,
|
||||
IValueProvider valueProvider,
|
||||
IList<IInputFormatter> inputFormatters,
|
||||
IObjectModelValidator objectModelValidator,
|
||||
IModelValidatorProvider validatorProvider,
|
||||
Func<ModelMetadata, bool> propertyFilter)
|
||||
{
|
||||
if (model == null)
|
||||
|
|
@ -484,21 +399,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
throw new ArgumentNullException(nameof(valueProvider));
|
||||
}
|
||||
|
||||
if (inputFormatters == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(inputFormatters));
|
||||
}
|
||||
|
||||
if (objectModelValidator == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(objectModelValidator));
|
||||
}
|
||||
|
||||
if (validatorProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(validatorProvider));
|
||||
}
|
||||
|
||||
if (propertyFilter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(propertyFilter));
|
||||
|
|
@ -515,20 +420,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
var modelMetadata = metadataProvider.GetMetadataForType(modelType);
|
||||
var modelState = actionContext.ModelState;
|
||||
|
||||
var operationBindingContext = new OperationBindingContext
|
||||
{
|
||||
InputFormatters = inputFormatters,
|
||||
ValidatorProvider = validatorProvider,
|
||||
MetadataProvider = metadataProvider,
|
||||
ActionContext = actionContext,
|
||||
ValueProvider = valueProvider,
|
||||
};
|
||||
|
||||
var modelBindingContext = DefaultModelBindingContext.CreateBindingContext(
|
||||
operationBindingContext,
|
||||
actionContext,
|
||||
valueProvider,
|
||||
modelMetadata,
|
||||
bindingInfo: null,
|
||||
modelName: prefix ?? string.Empty);
|
||||
|
||||
modelBindingContext.Model = model;
|
||||
modelBindingContext.PropertyFilter = propertyFilter;
|
||||
|
||||
|
|
@ -555,8 +453,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
if (modelBindingResult != null && modelBindingResult.Value.IsModelSet)
|
||||
{
|
||||
objectModelValidator.Validate(
|
||||
operationBindingContext.ActionContext,
|
||||
operationBindingContext.ValidatorProvider,
|
||||
actionContext,
|
||||
modelBindingContext.ValidationState,
|
||||
modelBindingResult.Value.Key,
|
||||
modelBindingResult.Value.Model);
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
|
|||
/// Validates the provided object.
|
||||
/// </summary>
|
||||
/// <param name="actionContext">The <see cref="ActionContext"/> associated with the current request.</param>
|
||||
/// <param name="validatorProvider">The <see cref="IModelValidatorProvider"/>.</param>
|
||||
/// <param name="validationState">The <see cref="ValidationStateDictionary"/>. May be null.</param>
|
||||
/// <param name="prefix">
|
||||
/// The model prefix. Used to map the model object to entries in <paramref name="validationState"/>.
|
||||
|
|
@ -20,7 +19,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
|
|||
/// <param name="model">The model object.</param>
|
||||
void Validate(
|
||||
ActionContext actionContext,
|
||||
IModelValidatorProvider validatorProvider,
|
||||
ValidationStateDictionary validationState,
|
||||
string prefix,
|
||||
object model);
|
||||
|
|
|
|||
|
|
@ -567,13 +567,11 @@ namespace System.Web.Http
|
|||
/// </param>
|
||||
public void Validate<TEntity>(TEntity entity, string keyPrefix)
|
||||
{
|
||||
var validatidationState = new ValidationStateDictionary();
|
||||
ObjectValidator.Validate(
|
||||
ControllerContext,
|
||||
new CompositeModelValidatorProvider(ControllerContext.ValidatorProviders),
|
||||
validatidationState,
|
||||
keyPrefix,
|
||||
entity);
|
||||
validationState: null,
|
||||
prefix: keyPrefix,
|
||||
model: entity);
|
||||
}
|
||||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.Mvc.WebApiCompatShim
|
|||
/// <inheritdoc />
|
||||
public Task BindModelAsync(ModelBindingContext bindingContext)
|
||||
{
|
||||
var model = bindingContext.OperationBindingContext.HttpContext.GetHttpRequestMessage();
|
||||
var model = bindingContext.HttpContext.GetHttpRequestMessage();
|
||||
bindingContext.ValidationState.Add(model, new ValidationStateEntry() { SuppressValidation = true });
|
||||
bindingContext.Result = ModelBindingResult.Success(bindingContext.ModelName, model);
|
||||
|
||||
|
|
|
|||
|
|
@ -1373,10 +1373,9 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test
|
|||
// Arrange
|
||||
var binder = new StubModelBinder();
|
||||
var controller = GetController(binder, valueProvider: null);
|
||||
controller.ControllerContext.ValidatorProviders = new List<IModelValidatorProvider>()
|
||||
{
|
||||
Mock.Of<IModelValidatorProvider>(),
|
||||
};
|
||||
controller.ObjectValidator = new DefaultObjectValidator(
|
||||
controller.MetadataProvider,
|
||||
new[] { Mock.Of<IModelValidatorProvider>() });
|
||||
|
||||
var model = new TryValidateModelModel();
|
||||
|
||||
|
|
@ -1410,10 +1409,9 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test
|
|||
|
||||
var binder = new StubModelBinder();
|
||||
var controller = GetController(binder, valueProvider: null);
|
||||
controller.ControllerContext.ValidatorProviders = new List<IModelValidatorProvider>()
|
||||
{
|
||||
provider.Object,
|
||||
};
|
||||
controller.ObjectValidator = new DefaultObjectValidator(
|
||||
controller.MetadataProvider,
|
||||
new[] { provider.Object });
|
||||
|
||||
// Act
|
||||
var result = controller.TryValidateModel(model, "Prefix");
|
||||
|
|
@ -1447,10 +1445,9 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test
|
|||
|
||||
var binder = new StubModelBinder();
|
||||
var controller = GetController(binder, valueProvider: null);
|
||||
controller.ControllerContext.ValidatorProviders = new List<IModelValidatorProvider>()
|
||||
{
|
||||
provider.Object,
|
||||
};
|
||||
controller.ObjectValidator = new DefaultObjectValidator(
|
||||
controller.MetadataProvider,
|
||||
new[] { provider.Object });
|
||||
|
||||
// Act
|
||||
var result = controller.TryValidateModel(model);
|
||||
|
|
@ -1483,17 +1480,18 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test
|
|||
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
|
||||
var httpContext = new DefaultHttpContext();
|
||||
|
||||
var validatorProviders = new[]
|
||||
{
|
||||
new DataAnnotationsModelValidatorProvider(
|
||||
new ValidationAttributeAdapterProvider(),
|
||||
new TestOptionsManager<MvcDataAnnotationsLocalizationOptions>(),
|
||||
stringLocalizerFactory: null),
|
||||
};
|
||||
|
||||
var controllerContext = new ControllerContext()
|
||||
{
|
||||
HttpContext = httpContext,
|
||||
ValueProviders = new[] { valueProvider, },
|
||||
ValidatorProviders = new[]
|
||||
{
|
||||
new DataAnnotationsModelValidatorProvider(
|
||||
new ValidationAttributeAdapterProvider(),
|
||||
new TestOptionsManager<MvcDataAnnotationsLocalizationOptions>(),
|
||||
stringLocalizerFactory: null),
|
||||
},
|
||||
};
|
||||
|
||||
var binderFactory = new Mock<IModelBinderFactory>();
|
||||
|
|
@ -1506,7 +1504,7 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test
|
|||
ControllerContext = controllerContext,
|
||||
MetadataProvider = metadataProvider,
|
||||
ModelBinderFactory = binderFactory.Object,
|
||||
ObjectValidator = new DefaultObjectValidator(metadataProvider, new ValidatorCache()),
|
||||
ObjectValidator = new DefaultObjectValidator(metadataProvider, validatorProviders),
|
||||
};
|
||||
|
||||
return controller;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc.Internal;
|
||||
|
|
@ -126,12 +127,15 @@ namespace Microsoft.AspNetCore.Mvc.Controllers
|
|||
{
|
||||
var metadataProvider = new EmptyModelMetadataProvider();
|
||||
var services = new Mock<IServiceProvider>();
|
||||
services.Setup(s => s.GetService(typeof(IUrlHelper)))
|
||||
services
|
||||
.Setup(s => s.GetService(typeof(IUrlHelper)))
|
||||
.Returns(Mock.Of<IUrlHelper>());
|
||||
services.Setup(s => s.GetService(typeof(IModelMetadataProvider)))
|
||||
services
|
||||
.Setup(s => s.GetService(typeof(IModelMetadataProvider)))
|
||||
.Returns(metadataProvider);
|
||||
services.Setup(s => s.GetService(typeof(IObjectModelValidator)))
|
||||
.Returns(new DefaultObjectValidator(metadataProvider, new ValidatorCache()));
|
||||
services
|
||||
.Setup(s => s.GetService(typeof(IObjectModelValidator)))
|
||||
.Returns(new DefaultObjectValidator(metadataProvider, new List<IModelValidatorProvider>()));
|
||||
return services.Object;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -205,12 +205,17 @@ namespace Microsoft.AspNetCore.Mvc.Controllers
|
|||
{
|
||||
var metadataProvider = new EmptyModelMetadataProvider();
|
||||
var services = new Mock<IServiceProvider>();
|
||||
services.Setup(s => s.GetService(typeof(IUrlHelper)))
|
||||
.Returns(Mock.Of<IUrlHelper>());
|
||||
services.Setup(s => s.GetService(typeof(IModelMetadataProvider)))
|
||||
.Returns(metadataProvider);
|
||||
services.Setup(s => s.GetService(typeof(IObjectModelValidator)))
|
||||
.Returns(new DefaultObjectValidator(metadataProvider, new ValidatorCache()));
|
||||
services
|
||||
.Setup(s => s.GetService(typeof(IUrlHelper)))
|
||||
.Returns(Mock.Of<IUrlHelper>());
|
||||
services
|
||||
.Setup(s => s.GetService(typeof(IModelMetadataProvider)))
|
||||
.Returns(metadataProvider);
|
||||
services
|
||||
.Setup(s => s.GetService(typeof(IObjectModelValidator)))
|
||||
.Returns(new DefaultObjectValidator(
|
||||
metadataProvider,
|
||||
TestModelValidatorProvider.CreateDefaultProvider().ValidatorProviders));
|
||||
return services.Object;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2053,7 +2053,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
actionDescriptor,
|
||||
new IInputFormatter[0],
|
||||
actionArgumentsBinder.Object,
|
||||
new IModelValidatorProvider[0],
|
||||
new IValueProviderFactory[0],
|
||||
new NullLoggerFactory().CreateLogger<ControllerActionInvoker>(),
|
||||
new DiagnosticListener("Microsoft.AspNetCore"),
|
||||
|
|
@ -2108,8 +2107,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
new ControllerArgumentBinder(
|
||||
metadataProvider,
|
||||
TestModelBinderFactory.CreateDefault(metadataProvider),
|
||||
new DefaultObjectValidator(metadataProvider, new ValidatorCache())),
|
||||
new IModelValidatorProvider[0],
|
||||
new DefaultObjectValidator(metadataProvider, new IModelValidatorProvider[0])),
|
||||
new IValueProviderFactory[0],
|
||||
new NullLoggerFactory().CreateLogger<ControllerActionInvoker>(),
|
||||
new DiagnosticListener("Microsoft.AspNetCore"),
|
||||
|
|
@ -2233,7 +2231,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
ControllerActionDescriptor descriptor,
|
||||
IReadOnlyList<IInputFormatter> inputFormatters,
|
||||
IControllerActionArgumentBinder controllerActionArgumentBinder,
|
||||
IReadOnlyList<IModelValidatorProvider> modelValidatorProviders,
|
||||
IReadOnlyList<IValueProviderFactory> valueProviderFactories,
|
||||
ILogger logger,
|
||||
DiagnosticSource diagnosticSource,
|
||||
|
|
@ -2245,7 +2242,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
descriptor,
|
||||
inputFormatters,
|
||||
controllerActionArgumentBinder,
|
||||
modelValidatorProviders,
|
||||
valueProviderFactories,
|
||||
logger,
|
||||
diagnosticSource,
|
||||
|
|
|
|||
|
|
@ -135,7 +135,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
mockValidator
|
||||
.Setup(o => o.Validate(
|
||||
It.IsAny<ActionContext>(),
|
||||
It.IsAny<IModelValidatorProvider>(),
|
||||
It.IsAny<ValidationStateDictionary>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<object>()));
|
||||
|
|
@ -149,7 +148,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
mockValidator
|
||||
.Verify(o => o.Validate(
|
||||
It.IsAny<ActionContext>(),
|
||||
It.IsAny<IModelValidatorProvider>(),
|
||||
It.IsAny<ValidationStateDictionary>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<object>()),
|
||||
|
|
@ -181,7 +179,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
mockValidator
|
||||
.Setup(o => o.Validate(
|
||||
It.IsAny<ActionContext>(),
|
||||
It.IsAny<IModelValidatorProvider>(),
|
||||
It.IsAny<ValidationStateDictionary>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<object>()));
|
||||
|
|
@ -196,7 +193,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
mockValidator
|
||||
.Verify(o => o.Validate(
|
||||
It.IsAny<ActionContext>(),
|
||||
It.IsAny<IModelValidatorProvider>(),
|
||||
It.IsAny<ValidationStateDictionary>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<object>()),
|
||||
|
|
@ -221,7 +217,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
mockValidator
|
||||
.Setup(o => o.Validate(
|
||||
It.IsAny<ActionContext>(),
|
||||
It.IsAny<IModelValidatorProvider>(),
|
||||
It.IsAny<ValidationStateDictionary>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<object>()));
|
||||
|
|
@ -236,7 +231,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
mockValidator
|
||||
.Verify(o => o.Validate(
|
||||
It.IsAny<ActionContext>(),
|
||||
It.IsAny<IModelValidatorProvider>(),
|
||||
It.IsAny<ValidationStateDictionary>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<object>()),
|
||||
|
|
@ -267,7 +261,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
mockValidator
|
||||
.Setup(o => o.Validate(
|
||||
It.IsAny<ActionContext>(),
|
||||
It.IsAny<IModelValidatorProvider>(),
|
||||
It.IsAny<ValidationStateDictionary>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<object>()));
|
||||
|
|
@ -282,7 +275,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
mockValidator
|
||||
.Verify(o => o.Validate(
|
||||
It.IsAny<ActionContext>(),
|
||||
It.IsAny<IModelValidatorProvider>(),
|
||||
It.IsAny<ValidationStateDictionary>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<object>()),
|
||||
|
|
@ -637,7 +629,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
mockValidator
|
||||
.Setup(o => o.Validate(
|
||||
It.IsAny<ActionContext>(),
|
||||
It.IsAny<IModelValidatorProvider>(),
|
||||
It.IsAny<ValidationStateDictionary>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<object>()));
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_SimpleValueType_Valid_WithPrefix()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -38,7 +37,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
AssertKeysEqual(modelState, "parameter");
|
||||
|
|
@ -52,7 +51,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_SimpleReferenceType_Valid_WithPrefix()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -65,7 +63,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -80,7 +78,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_SimpleType_MaxErrorsReached()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -95,7 +92,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -110,7 +107,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_SimpleType_SuppressValidation()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -123,7 +119,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter", SuppressValidation = true });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -139,7 +135,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ComplexValueType_Valid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -153,7 +148,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -172,7 +167,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ComplexReferenceType_Valid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -186,7 +180,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -205,7 +199,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ComplexReferenceType_Invalid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -217,7 +210,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = string.Empty });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, string.Empty, model);
|
||||
validator.Validate(actionContext, validationState, string.Empty, model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -238,7 +231,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ComplexType_SuppressValidation()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -261,7 +253,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
});
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "person", model);
|
||||
validator.Validate(actionContext, validationState, "person", model);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -281,7 +273,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ComplexReferenceType_Invalid_MultipleErrorsOnProperty()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -294,7 +285,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -314,7 +305,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ComplexReferenceType_Invalid_MultipleErrorsOnProperty_EmptyPrefix()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -327,7 +317,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = string.Empty });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, string.Empty, model);
|
||||
validator.Validate(actionContext, validationState, string.Empty, model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -347,7 +337,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_NestedComplexReferenceType_Invalid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -360,7 +349,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = string.Empty });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, string.Empty, model);
|
||||
validator.Validate(actionContext, validationState, string.Empty, model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -392,7 +381,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ComplexType_IValidatableObject_Invalid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -406,7 +394,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -447,8 +435,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
httpContext.SetupGet(x => x.RequestServices).Returns(provider);
|
||||
|
||||
var actionContext = new ActionContext { HttpContext = httpContext.Object };
|
||||
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
||||
|
|
@ -466,12 +453,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
.Returns(new List<ValidationResult>());
|
||||
|
||||
// Act
|
||||
validator.Validate(
|
||||
actionContext,
|
||||
validatorProvider,
|
||||
validationState,
|
||||
null,
|
||||
model.Object);
|
||||
validator.Validate(actionContext, validationState, prefix: null, model: model.Object);
|
||||
|
||||
// Assert
|
||||
service.Verify();
|
||||
|
|
@ -482,7 +464,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ComplexType_FieldsAreIgnored_Valid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -495,7 +476,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -511,7 +492,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ComplexType_CyclesNotFollowed_Invalid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -527,7 +507,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -547,7 +527,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ComplexType_ShortCircuit_WhenMaxErrorCountIsSet()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -568,7 +547,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "user", });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "user", model);
|
||||
validator.Validate(actionContext, validationState, "user", model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -585,7 +564,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_CollectionType_ArrayOfSimpleType_Valid_DefaultKeyPattern()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -599,7 +577,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "parameter" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "parameter", model);
|
||||
validator.Validate(actionContext, validationState, "parameter", model);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -619,7 +597,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_CollectionType_ArrayOfComplexType_Invalid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -631,7 +608,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = string.Empty });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, string.Empty, model);
|
||||
validator.Validate(actionContext, validationState, string.Empty, model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -663,7 +640,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_CollectionType_ListOfComplexType_Invalid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -675,7 +651,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = string.Empty });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, string.Empty, model);
|
||||
validator.Validate(actionContext, validationState, string.Empty, model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -739,7 +715,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_IndexedCollectionTypes_Valid(object model, Type type)
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -758,7 +733,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
});
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "items", model);
|
||||
validator.Validate(actionContext, validationState, "items", model);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -781,7 +756,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_CollectionType_DictionaryOfSimpleType_Invalid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -801,7 +775,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "items" });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "items", model);
|
||||
validator.Validate(actionContext, validationState, "items", model);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -829,7 +803,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_CollectionType_DictionaryOfComplexType_Invalid()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -843,7 +816,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = string.Empty });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, string.Empty, model);
|
||||
validator.Validate(actionContext, validationState, string.Empty, model);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -890,7 +863,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_DoesntCatchExceptions_FromPropertyAccessors()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -904,7 +876,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
typeof(InvalidTimeZoneException),
|
||||
() =>
|
||||
{
|
||||
validator.Validate(actionContext, validatorProvider, validationState, string.Empty, model);
|
||||
validator.Validate(actionContext, validationState, string.Empty, model);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -913,7 +885,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_DoesNotUseOverridden_GetHashCodeOrEquals()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -927,14 +898,13 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
};
|
||||
|
||||
// Act & Assert (does not throw)
|
||||
validator.Validate(actionContext, validatorProvider, validationState, string.Empty, model);
|
||||
validator.Validate(actionContext, validationState, string.Empty, model);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Validate_ForExcludedComplexType_PropertiesMarkedAsSkipped()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -953,7 +923,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "user", });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "user", model);
|
||||
validator.Validate(actionContext, validationState, "user", model);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(ModelValidationState.Valid, modelState.ValidationState);
|
||||
|
|
@ -968,7 +938,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
public void Validate_ForExcludedCollectionType_PropertiesMarkedAsSkipped()
|
||||
{
|
||||
// Arrange
|
||||
var validatorProvider = CreateValidatorProvider();
|
||||
var actionContext = new ActionContext();
|
||||
var modelState = actionContext.ModelState;
|
||||
var validationState = new ValidationStateDictionary();
|
||||
|
|
@ -984,7 +953,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
validationState.Add(model, new ValidationStateEntry() { Key = "userIds", });
|
||||
|
||||
// Act
|
||||
validator.Validate(actionContext, validatorProvider, validationState, "userIds", model);
|
||||
validator.Validate(actionContext, validationState, "userIds", model);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(ModelValidationState.Valid, modelState.ValidationState);
|
||||
|
|
@ -995,11 +964,6 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
Assert.Empty(entry.Errors);
|
||||
}
|
||||
|
||||
private static IModelValidatorProvider CreateValidatorProvider()
|
||||
{
|
||||
return TestModelValidatorProvider.CreateDefaultProvider();
|
||||
}
|
||||
|
||||
private static DefaultObjectValidator CreateValidator(Type excludedType)
|
||||
{
|
||||
var excludeFilters = new List<ValidationExcludeFilter>();
|
||||
|
|
@ -1008,14 +972,16 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
excludeFilters.Add(new ValidationExcludeFilter(excludedType));
|
||||
}
|
||||
|
||||
var provider = TestModelMetadataProvider.CreateDefaultProvider(excludeFilters.ToArray());
|
||||
return new DefaultObjectValidator(provider, new ValidatorCache());
|
||||
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(excludeFilters.ToArray());
|
||||
var validatorProviders = TestModelValidatorProvider.CreateDefaultProvider().ValidatorProviders;
|
||||
return new DefaultObjectValidator(metadataProvider, validatorProviders);
|
||||
}
|
||||
|
||||
private static DefaultObjectValidator CreateValidator(params IMetadataDetailsProvider[] providers)
|
||||
{
|
||||
var provider = TestModelMetadataProvider.CreateDefaultProvider(providers);
|
||||
return new DefaultObjectValidator(provider, new ValidatorCache());
|
||||
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(providers);
|
||||
var validatorProviders = TestModelValidatorProvider.CreateDefaultProvider().ValidatorProviders;
|
||||
return new DefaultObjectValidator(metadataProvider, validatorProviders);
|
||||
}
|
||||
|
||||
private static void AssertKeysEqual(ModelStateDictionary modelState, params string[] keys)
|
||||
|
|
|
|||
|
|
@ -19,8 +19,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
{ "someName[0]", "42" },
|
||||
{ "someName[1]", "84" },
|
||||
};
|
||||
|
||||
var bindingContext = GetBindingContext(valueProvider);
|
||||
var modelState = bindingContext.ModelState;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
bindingContext.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithIntArrayProperty),
|
||||
nameof(ModelWithIntArrayProperty.ArrayProperty));
|
||||
|
||||
var binder = new ArrayModelBinder<int>(new SimpleTypeModelBinder(typeof(int)));
|
||||
|
||||
// Act
|
||||
|
|
@ -45,7 +50,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Lack of prefix and non-empty model name both ignored.
|
||||
context.ModelName = "modelName";
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForType(typeof(string[]));
|
||||
|
||||
context.ValueProvider = new TestValueProvider(new Dictionary<string, object>());
|
||||
|
|
@ -72,7 +77,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var context = CreateContext();
|
||||
context.ModelName = ModelNames.CreatePropertyModelName(prefix, "ArrayProperty");
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithArrayProperty),
|
||||
nameof(ModelWithArrayProperty.ArrayProperty));
|
||||
|
|
@ -112,10 +117,17 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
{ "someName[1]", "84" },
|
||||
};
|
||||
|
||||
var bindingContext = GetBindingContext(valueProvider, isReadOnly: false);
|
||||
var modelState = bindingContext.ModelState;
|
||||
var bindingContext = GetBindingContext(valueProvider);
|
||||
bindingContext.Model = model;
|
||||
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
metadataProvider.ForProperty(
|
||||
typeof(ModelWithIntArrayProperty),
|
||||
nameof(ModelWithIntArrayProperty.ArrayProperty)).BindingDetails(bd => bd.IsReadOnly = false);
|
||||
bindingContext.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithIntArrayProperty),
|
||||
nameof(ModelWithIntArrayProperty.ArrayProperty));
|
||||
|
||||
var binder = new ArrayModelBinder<int>(new SimpleTypeModelBinder(typeof(int)));
|
||||
|
||||
// Act
|
||||
|
|
@ -125,7 +137,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
Assert.NotEqual(default(ModelBindingResult), result);
|
||||
Assert.True(result.IsModelSet);
|
||||
Assert.Same(model, result.Model);
|
||||
|
||||
|
||||
for (var i = 0; i < arrayLength; i++)
|
||||
{
|
||||
// Array should be unchanged.
|
||||
|
|
@ -147,28 +159,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
});
|
||||
}
|
||||
|
||||
private static DefaultModelBindingContext GetBindingContext(
|
||||
IValueProvider valueProvider,
|
||||
bool isReadOnly = false)
|
||||
private static DefaultModelBindingContext GetBindingContext(IValueProvider valueProvider)
|
||||
{
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
metadataProvider.ForProperty(
|
||||
typeof(ModelWithIntArrayProperty),
|
||||
nameof(ModelWithIntArrayProperty.ArrayProperty)).BindingDetails(bd => bd.IsReadOnly = isReadOnly);
|
||||
|
||||
var modelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithIntArrayProperty),
|
||||
nameof(ModelWithIntArrayProperty.ArrayProperty));
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
var bindingContext = new DefaultModelBindingContext()
|
||||
{
|
||||
ModelMetadata = modelMetadata,
|
||||
ModelName = "someName",
|
||||
ModelState = new ModelStateDictionary(),
|
||||
ValueProvider = valueProvider,
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
MetadataProvider = metadataProvider,
|
||||
},
|
||||
};
|
||||
return bindingContext;
|
||||
}
|
||||
|
|
@ -177,14 +174,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
{
|
||||
var modelBindingContext = new DefaultModelBindingContext()
|
||||
{
|
||||
OperationBindingContext = new OperationBindingContext()
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
MetadataProvider = new TestModelMetadataProvider(),
|
||||
}
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
};
|
||||
|
||||
return modelBindingContext;
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
.AddSingleton<IModelBinder, NullModelBinder>()
|
||||
.BuildServiceProvider();
|
||||
|
||||
bindingContext.OperationBindingContext.HttpContext.RequestServices = serviceProvider;
|
||||
bindingContext.HttpContext.RequestServices = serviceProvider;
|
||||
|
||||
var binder = new BinderTypeModelBinder(typeof(NotNullModelBinder));
|
||||
|
||||
|
|
@ -75,23 +75,16 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var metadataProvider = new TestModelMetadataProvider();
|
||||
metadataProvider.ForType(modelType).BindingDetails(bd => bd.BinderType = binderType);
|
||||
|
||||
var operationBindingContext = new OperationBindingContext
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
MetadataProvider = metadataProvider,
|
||||
ValidatorProvider = Mock.Of<IModelValidatorProvider>(),
|
||||
};
|
||||
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ModelMetadata = metadataProvider.GetMetadataForType(modelType),
|
||||
ModelName = "someName",
|
||||
ValueProvider = Mock.Of<IValueProvider>(),
|
||||
ModelState = new ModelStateDictionary(),
|
||||
OperationBindingContext = operationBindingContext,
|
||||
};
|
||||
|
||||
return bindingContext;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
||||
|
|
@ -25,7 +27,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
public void Create_WhenBindingSourceIsNotFromBody_ReturnsNull(BindingSource source)
|
||||
{
|
||||
// Arrange
|
||||
var provider = new BodyModelBinderProvider(new TestHttpRequestStreamReaderFactory());
|
||||
var provider = CreateProvider();
|
||||
|
||||
var context = new TestModelBinderProviderContext(typeof(Person));
|
||||
context.BindingInfo.BindingSource = source;
|
||||
|
|
@ -41,7 +43,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
public void Create_WhenBindingSourceIsFromBody_ReturnsBinder()
|
||||
{
|
||||
// Arrange
|
||||
var provider = new BodyModelBinderProvider(new TestHttpRequestStreamReaderFactory());
|
||||
var provider = CreateProvider();
|
||||
|
||||
var context = new TestModelBinderProviderContext(typeof(Person));
|
||||
context.BindingInfo.BindingSource = BindingSource.Body;
|
||||
|
|
@ -53,6 +55,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
Assert.IsType<BodyModelBinder>(result);
|
||||
}
|
||||
|
||||
private static BodyModelBinderProvider CreateProvider()
|
||||
{
|
||||
return new BodyModelBinderProvider(new List<IInputFormatter>(), new TestHttpRequestStreamReaderFactory());
|
||||
}
|
||||
|
||||
private class Person
|
||||
{
|
||||
public string Name { get; set; }
|
||||
|
|
|
|||
|
|
@ -35,10 +35,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
var bindingContext = GetBindingContext(
|
||||
typeof(Person),
|
||||
new[] { inputFormatter },
|
||||
metadataProvider: provider);
|
||||
|
||||
var binder = CreateBinder();
|
||||
var binder = CreateBinder(new[] { inputFormatter });
|
||||
|
||||
// Act
|
||||
var binderResult = await binder.BindModelResultAsync(bindingContext);
|
||||
|
|
@ -59,7 +58,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
var bindingContext = GetBindingContext(typeof(Person), metadataProvider: provider);
|
||||
|
||||
var binder = CreateBinder();
|
||||
var binder = CreateBinder(new List<IInputFormatter>());
|
||||
|
||||
// Act
|
||||
var binderResult = await binder.BindModelResultAsync(bindingContext);
|
||||
|
|
@ -87,7 +86,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var bindingContext = GetBindingContext(typeof(Person), metadataProvider: provider);
|
||||
bindingContext.BinderModelName = "custom";
|
||||
|
||||
var binder = CreateBinder();
|
||||
var binder = CreateBinder(new List<IInputFormatter>());
|
||||
|
||||
// Act
|
||||
var binderResult = await binder.BindModelResultAsync(bindingContext);
|
||||
|
|
@ -114,7 +113,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
var bindingContext = GetBindingContext(typeof(Person), metadataProvider: provider);
|
||||
|
||||
var binder = CreateBinder();
|
||||
var binder = CreateBinder(new List<IInputFormatter>());
|
||||
|
||||
// Act
|
||||
var binderResult = await binder.BindModelResultAsync(bindingContext);
|
||||
|
|
@ -137,11 +136,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
var bindingContext = GetBindingContext(
|
||||
typeof(Person),
|
||||
inputFormatters: new[] { new XyzFormatter() },
|
||||
httpContext: httpContext,
|
||||
metadataProvider: provider);
|
||||
|
||||
var binder = CreateBinder();
|
||||
var binder = CreateBinder(new[] { new XyzFormatter() });
|
||||
|
||||
// Act
|
||||
var binderResult = await binder.BindModelResultAsync(bindingContext);
|
||||
|
|
@ -172,11 +170,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
var bindingContext = GetBindingContext(
|
||||
typeof(Person),
|
||||
inputFormatters: null,
|
||||
httpContext: httpContext,
|
||||
metadataProvider: provider);
|
||||
|
||||
var binder = CreateBinder();
|
||||
var binder = CreateBinder(new List<IInputFormatter>());
|
||||
|
||||
// Act
|
||||
var binderResult = await binder.BindModelResultAsync(bindingContext);
|
||||
|
|
@ -208,11 +205,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
canReadFormatter1,
|
||||
canReadFormatter2
|
||||
};
|
||||
|
||||
var provider = new TestModelMetadataProvider();
|
||||
provider.ForType<Person>().BindingDetails(d => d.BindingSource = BindingSource.Body);
|
||||
var bindingContext = GetBindingContext(typeof(Person), inputFormatters, metadataProvider: provider);
|
||||
var bindingContext = GetBindingContext(typeof(Person), metadataProvider: provider);
|
||||
|
||||
var binder = CreateBinder();
|
||||
var binder = CreateBinder(inputFormatters);
|
||||
|
||||
// Act
|
||||
var binderResult = await binder.BindModelResultAsync(bindingContext);
|
||||
|
|
@ -224,7 +222,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
private static DefaultModelBindingContext GetBindingContext(
|
||||
Type modelType,
|
||||
IEnumerable<IInputFormatter> inputFormatters = null,
|
||||
HttpContext httpContext = null,
|
||||
IModelMetadataProvider metadataProvider = null)
|
||||
{
|
||||
|
|
@ -233,44 +230,32 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
httpContext = new DefaultHttpContext();
|
||||
}
|
||||
|
||||
if (inputFormatters == null)
|
||||
{
|
||||
inputFormatters = Enumerable.Empty<IInputFormatter>();
|
||||
}
|
||||
|
||||
if (metadataProvider == null)
|
||||
{
|
||||
metadataProvider = new EmptyModelMetadataProvider();
|
||||
}
|
||||
|
||||
var operationBindingContext = new OperationBindingContext
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = httpContext,
|
||||
},
|
||||
InputFormatters = inputFormatters.ToList(),
|
||||
MetadataProvider = metadataProvider,
|
||||
};
|
||||
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
FieldName = "someField",
|
||||
IsTopLevelObject = true,
|
||||
ModelMetadata = metadataProvider.GetMetadataForType(modelType),
|
||||
ModelName = "someName",
|
||||
ValueProvider = Mock.Of<IValueProvider>(),
|
||||
ModelState = new ModelStateDictionary(),
|
||||
OperationBindingContext = operationBindingContext,
|
||||
BindingSource = BindingSource.Body,
|
||||
};
|
||||
|
||||
return bindingContext;
|
||||
}
|
||||
|
||||
private static BodyModelBinder CreateBinder()
|
||||
private static BodyModelBinder CreateBinder(IList<IInputFormatter> formatters)
|
||||
{
|
||||
return new BodyModelBinder(new TestHttpRequestStreamReaderFactory());
|
||||
return new BodyModelBinder(formatters, new TestHttpRequestStreamReaderFactory());
|
||||
}
|
||||
|
||||
private class Person
|
||||
|
|
|
|||
|
|
@ -115,10 +115,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
ModelName = "foo",
|
||||
ModelState = new ModelStateDictionary(),
|
||||
ValueProvider = valueProvider,
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
MetadataProvider = metadataProvider,
|
||||
}
|
||||
};
|
||||
return bindingContext;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Assert
|
||||
Assert.NotEqual(default(ModelBindingResult), result);
|
||||
Assert.True(result.IsModelSet);
|
||||
Assert.Equal(bindingContext.OperationBindingContext.HttpContext.RequestAborted, result.Model);
|
||||
Assert.Equal(bindingContext.HttpContext.RequestAborted, result.Model);
|
||||
}
|
||||
|
||||
private static DefaultModelBindingContext GetBindingContext(Type modelType)
|
||||
|
|
@ -33,17 +33,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var metadataProvider = new EmptyModelMetadataProvider();
|
||||
DefaultModelBindingContext bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
ModelMetadata = metadataProvider.GetMetadataForType(modelType),
|
||||
ModelName = "someName",
|
||||
ValueProvider = new SimpleValueProvider(),
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
MetadataProvider = metadataProvider,
|
||||
},
|
||||
ValidationState = new ValidationStateDictionary(),
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -187,7 +187,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
{ "someName", null },
|
||||
};
|
||||
var bindingContext = GetModelBindingContext(valueProvider, isReadOnly: false);
|
||||
var modelState = bindingContext.ModelState;
|
||||
|
||||
// Act
|
||||
var result = await binder.BindModelResultAsync(bindingContext);
|
||||
|
|
@ -228,7 +227,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Lack of prefix and non-empty model name both ignored.
|
||||
context.ModelName = "modelName";
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForType(typeof(List<string>));
|
||||
|
||||
context.ValueProvider = new TestValueProvider(new Dictionary<string, object>());
|
||||
|
|
@ -261,7 +260,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Lack of prefix and non-empty model name both ignored.
|
||||
context.ModelName = "modelName";
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForType(typeof(List<string>));
|
||||
|
||||
context.ValueProvider = new TestValueProvider(new Dictionary<string, object>());
|
||||
|
|
@ -289,7 +288,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var context = CreateContext();
|
||||
context.ModelName = ModelNames.CreatePropertyModelName(prefix, "ListProperty");
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithListProperty),
|
||||
nameof(ModelWithListProperty.ListProperty));
|
||||
|
|
@ -376,10 +375,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
ModelName = "someName",
|
||||
ModelState = new ModelStateDictionary(),
|
||||
ValueProvider = valueProvider,
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
MetadataProvider = metadataProvider
|
||||
},
|
||||
ValidationState = new ValidationStateDictionary(),
|
||||
FieldName = "testfieldname",
|
||||
};
|
||||
|
|
@ -413,14 +408,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
{
|
||||
var modelBindingContext = new DefaultModelBindingContext()
|
||||
{
|
||||
OperationBindingContext = new OperationBindingContext()
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
MetadataProvider = new TestModelMetadataProvider(),
|
||||
}
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
};
|
||||
|
||||
return modelBindingContext;
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
bindingContext.IsTopLevelObject = false;
|
||||
bindingContext.ModelName = "SimpleContainer.Simple";
|
||||
bindingContext.ValueProvider = valueProvider.Object;
|
||||
bindingContext.OperationBindingContext.ValueProvider = valueProvider.Object;
|
||||
bindingContext.OriginalValueProvider = valueProvider.Object;
|
||||
|
||||
var binder = CreateBinder(bindingContext.ModelMetadata);
|
||||
|
||||
|
|
@ -171,7 +171,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var bindingContext = CreateContext(GetMetadataForType(modelType));
|
||||
bindingContext.IsTopLevelObject = false;
|
||||
bindingContext.ValueProvider = valueProvider.Object;
|
||||
bindingContext.OperationBindingContext.ValueProvider = valueProvider.Object;
|
||||
bindingContext.OriginalValueProvider = valueProvider.Object;
|
||||
|
||||
var binder = CreateBinder(bindingContext.ModelMetadata);
|
||||
|
||||
|
|
@ -206,7 +206,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var bindingContext = CreateContext(GetMetadataForType(modelType));
|
||||
bindingContext.IsTopLevelObject = false;
|
||||
bindingContext.ValueProvider = valueProvider.Object;
|
||||
bindingContext.OperationBindingContext.ValueProvider = originalValueProvider.Object;
|
||||
bindingContext.OriginalValueProvider = originalValueProvider.Object;
|
||||
|
||||
var binder = CreateBinder(bindingContext.ModelMetadata);
|
||||
|
||||
|
|
@ -239,7 +239,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var bindingContext = CreateContext(GetMetadataForType(modelType));
|
||||
bindingContext.IsTopLevelObject = false;
|
||||
bindingContext.ValueProvider = valueProvider.Object;
|
||||
bindingContext.OperationBindingContext.ValueProvider = originalValueProvider.Object;
|
||||
bindingContext.OriginalValueProvider = originalValueProvider.Object;
|
||||
|
||||
var binder = CreateBinder(bindingContext.ModelMetadata);
|
||||
|
||||
|
|
@ -268,11 +268,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
ModelMetadata = GetMetadataForType(typeof(Person)),
|
||||
ModelName = string.Empty,
|
||||
ValueProvider = mockValueProvider.Object,
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
MetadataProvider = _metadataProvider,
|
||||
ValidatorProvider = Mock.Of<IModelValidatorProvider>()
|
||||
},
|
||||
ModelState = new ModelStateDictionary(),
|
||||
};
|
||||
|
||||
|
|
@ -405,17 +400,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var metadata = GetMetadataForProperty(typeof(PersonWithBindExclusion), property);
|
||||
var bindingContext = new DefaultModelBindingContext()
|
||||
{
|
||||
ModelMetadata = GetMetadataForType(typeof(PersonWithBindExclusion)),
|
||||
OperationBindingContext = new OperationBindingContext()
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
HttpContext = new DefaultHttpContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext()
|
||||
{
|
||||
RequestServices = new ServiceCollection().BuildServiceProvider(),
|
||||
},
|
||||
RequestServices = new ServiceCollection().BuildServiceProvider(),
|
||||
},
|
||||
},
|
||||
ModelMetadata = GetMetadataForType(typeof(PersonWithBindExclusion)),
|
||||
};
|
||||
|
||||
var binder = CreateBinder(bindingContext.ModelMetadata);
|
||||
|
|
@ -435,17 +427,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var metadata = GetMetadataForProperty(typeof(PersonWithBindExclusion), property);
|
||||
var bindingContext = new DefaultModelBindingContext()
|
||||
{
|
||||
ModelMetadata = GetMetadataForType(typeof(PersonWithBindExclusion)),
|
||||
OperationBindingContext = new OperationBindingContext()
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
HttpContext = new DefaultHttpContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext()
|
||||
{
|
||||
RequestServices = new ServiceCollection().BuildServiceProvider(),
|
||||
},
|
||||
RequestServices = new ServiceCollection().BuildServiceProvider(),
|
||||
},
|
||||
},
|
||||
ModelMetadata = GetMetadataForType(typeof(PersonWithBindExclusion)),
|
||||
};
|
||||
|
||||
var binder = CreateBinder(bindingContext.ModelMetadata);
|
||||
|
|
@ -466,17 +455,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var metadata = GetMetadataForProperty(typeof(PersonWithBindExclusion), property);
|
||||
var bindingContext = new DefaultModelBindingContext()
|
||||
{
|
||||
ModelMetadata = GetMetadataForType(typeof(PersonWithBindExclusion)),
|
||||
OperationBindingContext = new OperationBindingContext()
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext()
|
||||
{
|
||||
RequestServices = new ServiceCollection().BuildServiceProvider(),
|
||||
},
|
||||
},
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
ModelMetadata = GetMetadataForType(typeof(PersonWithBindExclusion)),
|
||||
};
|
||||
|
||||
var binder = CreateBinder(bindingContext.ModelMetadata);
|
||||
|
|
@ -499,17 +482,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var metadata = GetMetadataForProperty(typeof(TypeWithIncludedPropertiesUsingBindAttribute), property);
|
||||
var bindingContext = new DefaultModelBindingContext()
|
||||
{
|
||||
ModelMetadata = GetMetadataForType(typeof(TypeWithIncludedPropertiesUsingBindAttribute)),
|
||||
OperationBindingContext = new OperationBindingContext()
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext()
|
||||
{
|
||||
RequestServices = new ServiceCollection().BuildServiceProvider(),
|
||||
},
|
||||
},
|
||||
HttpContext = new DefaultHttpContext()
|
||||
},
|
||||
ModelMetadata = GetMetadataForType(typeof(TypeWithIncludedPropertiesUsingBindAttribute)),
|
||||
};
|
||||
|
||||
var binder = CreateBinder(bindingContext.ModelMetadata);
|
||||
|
|
@ -531,17 +508,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var metadata = GetMetadataForProperty(typeof(ModelWithMixedBindingBehaviors), property);
|
||||
var bindingContext = new DefaultModelBindingContext()
|
||||
{
|
||||
ModelMetadata = GetMetadataForType(typeof(ModelWithMixedBindingBehaviors)),
|
||||
OperationBindingContext = new OperationBindingContext()
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext()
|
||||
{
|
||||
RequestServices = new ServiceCollection().BuildServiceProvider(),
|
||||
},
|
||||
},
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
ModelMetadata = GetMetadataForType(typeof(ModelWithMixedBindingBehaviors)),
|
||||
};
|
||||
|
||||
var binder = CreateBinder(bindingContext.ModelMetadata);
|
||||
|
|
@ -794,9 +765,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Arrange
|
||||
var model = new Person();
|
||||
var bindingContext = CreateContext(GetMetadataForType(model.GetType()), model);
|
||||
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var metadata = metadataProvider.GetMetadataForType(typeof(Person));
|
||||
|
||||
var metadata = GetMetadataForType(typeof(Person));
|
||||
var propertyMetadata = metadata.Properties[nameof(model.PropertyWithDefaultValue)];
|
||||
|
||||
var result = ModelBindingResult.Failed("foo");
|
||||
|
|
@ -817,9 +787,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Arrange
|
||||
var model = new Person();
|
||||
var bindingContext = CreateContext(GetMetadataForType(model.GetType()), model);
|
||||
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var metadata = metadataProvider.GetMetadataForType(typeof(Person));
|
||||
|
||||
var metadata = GetMetadataForType(typeof(Person));
|
||||
var propertyMetadata = metadata.Properties[nameof(model.PropertyWithInitializedValue)];
|
||||
|
||||
// The null model value won't be used because IsModelBound = false.
|
||||
|
|
@ -842,9 +811,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Arrange
|
||||
var model = new Person();
|
||||
var bindingContext = CreateContext(GetMetadataForType(model.GetType()), model);
|
||||
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var metadata = metadataProvider.GetMetadataForType(typeof(Person));
|
||||
|
||||
var metadata = GetMetadataForType(typeof(Person));
|
||||
var propertyMetadata = metadata.Properties[nameof(model.PropertyWithInitializedValueAndDefault)];
|
||||
|
||||
// The null model value won't be used because IsModelBound = false.
|
||||
|
|
@ -867,9 +835,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Arrange
|
||||
var model = new Person();
|
||||
var bindingContext = CreateContext(GetMetadataForType(model.GetType()), model);
|
||||
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var metadata = metadataProvider.GetMetadataForType(typeof(Person));
|
||||
|
||||
var metadata = GetMetadataForType(typeof(Person));
|
||||
var propertyMetadata = metadata.Properties[nameof(model.NonUpdateableProperty)];
|
||||
|
||||
var result = ModelBindingResult.Failed("foo");
|
||||
|
|
@ -912,8 +879,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var type = model.GetType();
|
||||
var bindingContext = CreateContext(GetMetadataForType(type), model);
|
||||
var modelState = bindingContext.ModelState;
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var metadata = metadataProvider.GetMetadataForType(type);
|
||||
var metadata = GetMetadataForType(type);
|
||||
|
||||
var propertyMetadata = bindingContext.ModelMetadata.Properties[propertyName];
|
||||
var result = ModelBindingResult.Success(
|
||||
|
|
@ -960,9 +926,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Arrange
|
||||
var model = new Person();
|
||||
var bindingContext = CreateContext(GetMetadataForType(model.GetType()), model);
|
||||
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var metadata = metadataProvider.GetMetadataForType(typeof(Person));
|
||||
|
||||
var metadata = GetMetadataForType(typeof(Person));
|
||||
var propertyMetadata = bindingContext.ModelMetadata.Properties[nameof(model.DateOfBirth)];
|
||||
|
||||
var result = ModelBindingResult.Success("foo", new DateTime(2001, 1, 1));
|
||||
|
|
@ -987,9 +952,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
};
|
||||
|
||||
var bindingContext = CreateContext(GetMetadataForType(model.GetType()), model);
|
||||
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var metadata = metadataProvider.GetMetadataForType(typeof(Person));
|
||||
|
||||
var metadata = GetMetadataForType(typeof(Person));
|
||||
var propertyMetadata = bindingContext.ModelMetadata.Properties[nameof(model.DateOfDeath)];
|
||||
|
||||
var result = ModelBindingResult.Success("foo", new DateTime(1800, 1, 1));
|
||||
|
|
@ -1012,9 +976,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var model = new ModelWhosePropertySetterThrows();
|
||||
var bindingContext = CreateContext(GetMetadataForType(model.GetType()), model);
|
||||
bindingContext.ModelName = "foo";
|
||||
|
||||
var metadataProvider = bindingContext.OperationBindingContext.MetadataProvider;
|
||||
var metadata = metadataProvider.GetMetadataForType(typeof(ModelWhosePropertySetterThrows));
|
||||
|
||||
var metadata = GetMetadataForType(typeof(ModelWhosePropertySetterThrows));
|
||||
var propertyMetadata = bindingContext.ModelMetadata.Properties[nameof(model.NameNoAttribute)];
|
||||
|
||||
var result = ModelBindingResult.Success("foo.NameNoAttribute", model: null);
|
||||
|
|
@ -1068,12 +1031,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
ModelMetadata = metadata,
|
||||
ModelName = "theModel",
|
||||
ModelState = new ModelStateDictionary(),
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
MetadataProvider = _metadataProvider,
|
||||
ValidatorProvider = TestModelValidatorProvider.CreateDefaultProvider(),
|
||||
ValueProvider = valueProvider,
|
||||
},
|
||||
ValueProvider = valueProvider,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,11 +137,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
var context = CreateContext();
|
||||
context.ModelName = modelName;
|
||||
context.OperationBindingContext.ValueProvider = CreateEnumerableValueProvider(keyFormat, dictionary);
|
||||
context.ValueProvider = context.OperationBindingContext.ValueProvider;
|
||||
context.ValueProvider = CreateEnumerableValueProvider(keyFormat, dictionary);
|
||||
context.FieldName = modelName;
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithDictionaryProperties),
|
||||
nameof(ModelWithDictionaryProperties.DictionaryProperty));
|
||||
|
|
@ -175,11 +174,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
var context = CreateContext();
|
||||
context.ModelName = "prefix";
|
||||
context.OperationBindingContext.ValueProvider = CreateTestValueProvider("prefix[{0}]", dictionary);
|
||||
context.ValueProvider = context.OperationBindingContext.ValueProvider;
|
||||
context.ValueProvider = CreateTestValueProvider("prefix[{0}]", dictionary);
|
||||
context.FieldName = context.ModelName;
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithDictionaryProperties),
|
||||
nameof(ModelWithDictionaryProperties.DictionaryProperty));
|
||||
|
|
@ -228,12 +226,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
var context = CreateContext();
|
||||
context.ModelName = "prefix";
|
||||
context.OperationBindingContext.ValueProvider =
|
||||
CreateEnumerableValueProvider("prefix[{0}]", stringDictionary);
|
||||
context.ValueProvider = context.OperationBindingContext.ValueProvider;
|
||||
context.ValueProvider = CreateEnumerableValueProvider("prefix[{0}]", stringDictionary);
|
||||
context.FieldName = context.ModelName;
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithDictionaryProperties),
|
||||
nameof(ModelWithDictionaryProperties.DictionaryWithValueTypesProperty));
|
||||
|
|
@ -269,11 +265,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
var context = CreateContext();
|
||||
context.ModelName = "prefix";
|
||||
context.OperationBindingContext.ValueProvider = CreateEnumerableValueProvider("{0}", stringDictionary);
|
||||
context.ValueProvider = context.OperationBindingContext.ValueProvider;
|
||||
context.ValueProvider = CreateEnumerableValueProvider("{0}", stringDictionary);
|
||||
context.FieldName = context.ModelName;
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithDictionaryProperties),
|
||||
nameof(ModelWithDictionaryProperties.DictionaryWithComplexValuesProperty));
|
||||
|
|
@ -328,11 +323,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var context = CreateContext();
|
||||
context.ModelName = modelName;
|
||||
|
||||
context.OperationBindingContext.ValueProvider = CreateEnumerableValueProvider(keyFormat, dictionary);
|
||||
context.ValueProvider = context.OperationBindingContext.ValueProvider;
|
||||
context.ValueProvider = CreateEnumerableValueProvider(keyFormat, dictionary);
|
||||
context.FieldName = context.ModelName;
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithDictionaryProperties),
|
||||
nameof(ModelWithDictionaryProperties.CustomDictionaryProperty));
|
||||
|
|
@ -363,7 +357,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Lack of prefix and non-empty model name both ignored.
|
||||
context.ModelName = "modelName";
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForType(typeof(Dictionary<string, string>));
|
||||
|
||||
context.ValueProvider = new TestValueProvider(new Dictionary<string, object>());
|
||||
|
|
@ -392,7 +386,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var context = CreateContext();
|
||||
context.ModelName = ModelNames.CreatePropertyModelName(prefix, "ListProperty");
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithDictionaryProperties),
|
||||
nameof(ModelWithDictionaryProperties.DictionaryProperty));
|
||||
|
|
@ -444,15 +438,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
{
|
||||
var modelBindingContext = new DefaultModelBindingContext()
|
||||
{
|
||||
ModelState = new ModelStateDictionary(),
|
||||
OperationBindingContext = new OperationBindingContext()
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
MetadataProvider = new TestModelMetadataProvider(),
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
ModelState = new ModelStateDictionary(),
|
||||
ValidationState = new ValidationStateDictionary(),
|
||||
};
|
||||
|
||||
|
|
@ -510,11 +500,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
ModelMetadata = metadata,
|
||||
ModelName = "someName",
|
||||
ModelState = new ModelStateDictionary(),
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
MetadataProvider = metadataProvider,
|
||||
ValueProvider = valueProvider,
|
||||
},
|
||||
ValueProvider = valueProvider,
|
||||
ValidationState = new ValidationStateDictionary(),
|
||||
};
|
||||
|
|
|
|||
|
|
@ -74,16 +74,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var metadataProvider = new EmptyModelMetadataProvider();
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = httpContext,
|
||||
},
|
||||
ModelMetadata = metadataProvider.GetMetadataForType(modelType),
|
||||
ModelName = "file",
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = httpContext,
|
||||
},
|
||||
MetadataProvider = metadataProvider,
|
||||
},
|
||||
ValidationState = new ValidationStateDictionary(),
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -254,11 +254,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
metadataProvider
|
||||
.ForProperty<ModelWithReadOnlyArray>(nameof(ModelWithReadOnlyArray.ArrayProperty))
|
||||
.BindingDetails(bd => bd.BindingSource = BindingSource.Header);
|
||||
var modelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
var metadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithReadOnlyArray),
|
||||
nameof(ModelWithReadOnlyArray.ArrayProperty));
|
||||
|
||||
return GetBindingContext(metadataProvider, modelMetadata, httpContext);
|
||||
return GetBindingContext(metadata, httpContext);
|
||||
}
|
||||
|
||||
private static DefaultModelBindingContext GetBindingContext(Type modelType, HttpContext httpContext)
|
||||
|
|
@ -266,27 +266,22 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var metadataProvider = new EmptyModelMetadataProvider();
|
||||
var metadata = metadataProvider.GetMetadataForType(modelType);
|
||||
|
||||
return GetBindingContext(metadataProvider, metadata, httpContext);
|
||||
return GetBindingContext(metadata, httpContext);
|
||||
}
|
||||
|
||||
private static DefaultModelBindingContext GetBindingContext(
|
||||
IModelMetadataProvider metadataProvider,
|
||||
ModelMetadata metadata,
|
||||
HttpContext httpContext)
|
||||
{
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = httpContext,
|
||||
},
|
||||
ModelMetadata = metadata,
|
||||
ModelName = "file",
|
||||
ModelState = new ModelStateDictionary(),
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = httpContext,
|
||||
},
|
||||
MetadataProvider = metadataProvider,
|
||||
},
|
||||
ValidationState = new ValidationStateDictionary(),
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var modelBindingContext = GetBindingContext(type);
|
||||
|
||||
modelBindingContext.FieldName = header;
|
||||
modelBindingContext.OperationBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });
|
||||
modelBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });
|
||||
|
||||
// Act
|
||||
var result = await binder.BindModelResultAsync(modelBindingContext);
|
||||
|
|
@ -63,7 +63,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var modelBindingContext = GetBindingContext(type);
|
||||
|
||||
modelBindingContext.FieldName = header;
|
||||
modelBindingContext.OperationBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });
|
||||
modelBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });
|
||||
|
||||
// Act
|
||||
var result = await binder.BindModelResultAsync(modelBindingContext);
|
||||
|
|
@ -89,7 +89,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var modelBindingContext = GetBindingContext(destinationType);
|
||||
|
||||
modelBindingContext.FieldName = header;
|
||||
modelBindingContext.OperationBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });
|
||||
modelBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });
|
||||
|
||||
// Act
|
||||
var result = await binder.BindModelResultAsync(modelBindingContext);
|
||||
|
|
@ -111,7 +111,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var modelBindingContext = GetBindingContextForReadOnlyArray();
|
||||
|
||||
modelBindingContext.FieldName = header;
|
||||
modelBindingContext.OperationBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });
|
||||
modelBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });
|
||||
|
||||
// Act
|
||||
var result = await binder.BindModelResultAsync(modelBindingContext);
|
||||
|
|
@ -133,7 +133,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var modelBindingContext = GetBindingContext(typeof(ISet<string>));
|
||||
|
||||
modelBindingContext.FieldName = header;
|
||||
modelBindingContext.OperationBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });
|
||||
modelBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });
|
||||
|
||||
// Act
|
||||
var result = await binder.BindModelResultAsync(modelBindingContext);
|
||||
|
|
@ -173,18 +173,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
{
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
ModelMetadata = modelMetadata,
|
||||
ModelName = "modelName",
|
||||
FieldName = "modelName",
|
||||
ModelState = new ModelStateDictionary(),
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
MetadataProvider = metadataProvider,
|
||||
},
|
||||
BinderModelName = modelMetadata.BinderModelName,
|
||||
BindingSource = modelMetadata.BindingSource,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -106,16 +106,16 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
ModelBindingResult? innerResult;
|
||||
if (isSuccess)
|
||||
{
|
||||
innerResult = ModelBindingResult.Success("somename.key", model);
|
||||
innerResult = ModelBindingResult.Success("somename.Key", model);
|
||||
}
|
||||
else
|
||||
{
|
||||
innerResult = ModelBindingResult.Failed("somename.key");
|
||||
innerResult = ModelBindingResult.Failed("somename.Key");
|
||||
}
|
||||
|
||||
var innerBinder = new StubModelBinder(context =>
|
||||
{
|
||||
Assert.Equal("someName.key", context.ModelName);
|
||||
Assert.Equal("someName.Key", context.ModelName);
|
||||
return innerResult;
|
||||
});
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var binder = new KeyValuePairModelBinder<int, string>(innerBinder, innerBinder);
|
||||
|
||||
// Act
|
||||
var result = await binder.TryBindStrongModel<int>(bindingContext, innerBinder, "key");
|
||||
var result = await binder.TryBindStrongModel<int>(bindingContext, innerBinder, "Key");
|
||||
|
||||
// Assert
|
||||
Assert.Equal(innerResult.Value, result);
|
||||
|
|
@ -146,7 +146,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
// Lack of prefix and non-empty model name both ignored.
|
||||
context.ModelName = "modelName";
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForType(typeof(KeyValuePair<string, string>));
|
||||
|
||||
context.ValueProvider = new TestValueProvider(new Dictionary<string, object>());
|
||||
|
|
@ -176,7 +176,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
var context = CreateContext();
|
||||
context.ModelName = ModelNames.CreatePropertyModelName(prefix, "KeyValuePairProperty");
|
||||
|
||||
var metadataProvider = context.OperationBindingContext.MetadataProvider;
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
context.ModelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithKeyValuePairProperty),
|
||||
nameof(ModelWithKeyValuePairProperty.KeyValuePairProperty));
|
||||
|
|
@ -194,13 +194,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
{
|
||||
var modelBindingContext = new DefaultModelBindingContext()
|
||||
{
|
||||
OperationBindingContext = new OperationBindingContext()
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
MetadataProvider = new TestModelMetadataProvider(),
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
ModelState = new ModelStateDictionary(),
|
||||
};
|
||||
|
|
@ -212,21 +208,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
IValueProvider valueProvider,
|
||||
Type keyValuePairType)
|
||||
{
|
||||
var metataProvider = new EmptyModelMetadataProvider();
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ModelMetadata = metataProvider.GetMetadataForType(keyValuePairType),
|
||||
ModelMetadata = metadataProvider.GetMetadataForType(keyValuePairType),
|
||||
ModelName = "someName",
|
||||
ModelState = new ModelStateDictionary(),
|
||||
ValueProvider = valueProvider,
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
MetadataProvider = metataProvider,
|
||||
ValidatorProvider = new DataAnnotationsModelValidatorProvider(
|
||||
new ValidationAttributeAdapterProvider(),
|
||||
new TestOptionsManager<MvcDataAnnotationsLocalizationOptions>(),
|
||||
stringLocalizerFactory: null)
|
||||
}
|
||||
};
|
||||
return bindingContext;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,27 +42,22 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
metadataProvider.ForType(modelType).BindingDetails(d => d.BindingSource = BindingSource.Services);
|
||||
var modelMetadata = metadataProvider.GetMetadataForType(modelType);
|
||||
|
||||
|
||||
var services = new ServiceCollection();
|
||||
services.AddSingleton<IService>(new Service());
|
||||
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext()
|
||||
{
|
||||
RequestServices = services.BuildServiceProvider(),
|
||||
}
|
||||
},
|
||||
ModelMetadata = modelMetadata,
|
||||
ModelName = "modelName",
|
||||
FieldName = "modelName",
|
||||
ModelState = new ModelStateDictionary(),
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext()
|
||||
{
|
||||
RequestServices = services.BuildServiceProvider(),
|
||||
}
|
||||
},
|
||||
MetadataProvider = metadataProvider,
|
||||
},
|
||||
BinderModelName = modelMetadata.BinderModelName,
|
||||
BindingSource = modelMetadata.BindingSource,
|
||||
ValidationState = new ValidationStateDictionary(),
|
||||
|
|
|
|||
|
|
@ -25,26 +25,23 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
Model = new object(),
|
||||
ModelMetadata = new TestModelMetadataProvider().GetMetadataForType(typeof(object)),
|
||||
ModelName = "theName",
|
||||
OperationBindingContext = new OperationBindingContext(),
|
||||
ValueProvider = new SimpleValueProvider(),
|
||||
ModelState = new ModelStateDictionary(),
|
||||
};
|
||||
|
||||
var metadataProvider = new TestModelMetadataProvider();
|
||||
metadataProvider.ForType<object>().BindingDetails(d =>
|
||||
{
|
||||
d.BindingSource = BindingSource.Custom;
|
||||
d.BinderType = typeof(TestModelBinder);
|
||||
d.BinderModelName = "custom";
|
||||
});
|
||||
{
|
||||
d.BindingSource = BindingSource.Custom;
|
||||
d.BinderType = typeof(TestModelBinder);
|
||||
d.BinderModelName = "custom";
|
||||
});
|
||||
|
||||
var newModelMetadata = metadataProvider.GetMetadataForType(typeof(object));
|
||||
|
||||
// Act
|
||||
var originalBinderModelName = bindingContext.BinderModelName;
|
||||
var originalBindingSource = bindingContext.BindingSource;
|
||||
var originalModelState = bindingContext.ModelState;
|
||||
var originalOperationBindingContext = bindingContext.OperationBindingContext;
|
||||
var originalValueProvider = bindingContext.ValueProvider;
|
||||
|
||||
var disposable = bindingContext.EnterNestedScope(
|
||||
|
|
@ -61,8 +58,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
Assert.Null(bindingContext.Model);
|
||||
Assert.Same(newModelMetadata, bindingContext.ModelMetadata);
|
||||
Assert.Equal("modelprefix.fieldName", bindingContext.ModelName);
|
||||
Assert.Same(originalModelState, bindingContext.ModelState);
|
||||
Assert.Same(originalOperationBindingContext, bindingContext.OperationBindingContext);
|
||||
Assert.Same(originalValueProvider, bindingContext.ValueProvider);
|
||||
|
||||
disposable.Dispose();
|
||||
|
|
@ -75,15 +70,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
var metadataProvider = new TestModelMetadataProvider();
|
||||
|
||||
var original = CreateDefaultValueProvider();
|
||||
var operationBindingContext = new OperationBindingContext()
|
||||
{
|
||||
ActionContext = new ActionContext(),
|
||||
ValueProvider = original,
|
||||
};
|
||||
|
||||
// Act
|
||||
var context = DefaultModelBindingContext.CreateBindingContext(
|
||||
operationBindingContext,
|
||||
new ActionContext(),
|
||||
original,
|
||||
metadataProvider.GetMetadataForType(typeof(object)),
|
||||
new BindingInfo() { BindingSource = BindingSource.Query },
|
||||
"model");
|
||||
|
|
@ -104,14 +95,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
.BindingDetails(b => b.BindingSource = BindingSource.Query);
|
||||
|
||||
var original = CreateDefaultValueProvider();
|
||||
var operationBindingContext = new OperationBindingContext()
|
||||
{
|
||||
ActionContext = new ActionContext(),
|
||||
ValueProvider = original,
|
||||
};
|
||||
|
||||
var context = DefaultModelBindingContext.CreateBindingContext(
|
||||
operationBindingContext,
|
||||
new ActionContext(),
|
||||
original,
|
||||
metadataProvider.GetMetadataForType(typeof(string)),
|
||||
new BindingInfo(),
|
||||
"model");
|
||||
|
|
@ -137,14 +123,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
.BindingDetails(b => b.BindingSource = BindingSource.Form);
|
||||
|
||||
var original = CreateDefaultValueProvider();
|
||||
var operationBindingContext = new OperationBindingContext()
|
||||
{
|
||||
ActionContext = new ActionContext(),
|
||||
ValueProvider = original,
|
||||
};
|
||||
|
||||
var context = DefaultModelBindingContext.CreateBindingContext(
|
||||
operationBindingContext,
|
||||
new ActionContext(),
|
||||
original,
|
||||
metadataProvider.GetMetadataForType(typeof(string)),
|
||||
new BindingInfo() { BindingSource = BindingSource.Query },
|
||||
"model");
|
||||
|
|
|
|||
|
|
@ -52,9 +52,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
GetModelBinderFactory(binder),
|
||||
Mock.Of<IValueProvider>(),
|
||||
new List<IInputFormatter>(),
|
||||
new Mock<IObjectModelValidator>(MockBehavior.Strict).Object,
|
||||
Mock.Of<IModelValidatorProvider>());
|
||||
new Mock<IObjectModelValidator>(MockBehavior.Strict).Object);
|
||||
|
||||
// Assert
|
||||
Assert.False(result);
|
||||
|
|
@ -84,7 +82,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
{ "", null }
|
||||
};
|
||||
var valueProvider = new TestValueProvider(values);
|
||||
var modelMetadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
|
||||
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
|
||||
|
||||
var actionContext = new ActionContext() { HttpContext = new DefaultHttpContext() };
|
||||
var modelState = actionContext.ModelState;
|
||||
|
|
@ -94,12 +92,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
model,
|
||||
"",
|
||||
actionContext,
|
||||
modelMetadataProvider,
|
||||
metadataProvider,
|
||||
GetModelBinderFactory(binderProviders),
|
||||
valueProvider,
|
||||
new List<IInputFormatter>(),
|
||||
new DefaultObjectValidator(modelMetadataProvider, new ValidatorCache()),
|
||||
validator);
|
||||
new DefaultObjectValidator(metadataProvider, new[] { validator }));
|
||||
|
||||
// Assert
|
||||
Assert.False(result);
|
||||
|
|
@ -139,9 +135,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
GetModelBinderFactory(binderProviders),
|
||||
valueProvider,
|
||||
new List<IInputFormatter>(),
|
||||
new DefaultObjectValidator(metadataProvider, new ValidatorCache()),
|
||||
validator);
|
||||
new DefaultObjectValidator(metadataProvider, new[] { validator }));
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -167,9 +161,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
GetModelBinderFactory(binder),
|
||||
Mock.Of<IValueProvider>(),
|
||||
new List<IInputFormatter>(),
|
||||
new Mock<IObjectModelValidator>(MockBehavior.Strict).Object,
|
||||
Mock.Of<IModelValidatorProvider>(),
|
||||
propertyFilter);
|
||||
|
||||
// Assert
|
||||
|
|
@ -223,9 +215,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
GetModelBinderFactory(binderProviders),
|
||||
valueProvider,
|
||||
new List<IInputFormatter>(),
|
||||
new DefaultObjectValidator(metadataProvider, new ValidatorCache()),
|
||||
validator,
|
||||
new DefaultObjectValidator(metadataProvider, new[] { validator }),
|
||||
propertyFilter);
|
||||
|
||||
// Assert
|
||||
|
|
@ -253,9 +243,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
GetModelBinderFactory(binder),
|
||||
Mock.Of<IValueProvider>(),
|
||||
new List<IInputFormatter>(),
|
||||
new Mock<IObjectModelValidator>(MockBehavior.Strict).Object,
|
||||
Mock.Of<IModelValidatorProvider>(),
|
||||
m => m.IncludedProperty);
|
||||
|
||||
// Assert
|
||||
|
|
@ -305,9 +293,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
TestModelMetadataProvider.CreateDefaultProvider(),
|
||||
GetModelBinderFactory(binderProviders),
|
||||
valueProvider,
|
||||
new List<IInputFormatter>(),
|
||||
new DefaultObjectValidator(metadataProvider, new ValidatorCache()),
|
||||
validator,
|
||||
new DefaultObjectValidator(metadataProvider, new[] { validator }),
|
||||
m => m.IncludedProperty,
|
||||
m => m.MyProperty);
|
||||
|
||||
|
|
@ -358,9 +344,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
GetModelBinderFactory(binderProviders),
|
||||
valueProvider,
|
||||
new List<IInputFormatter>(),
|
||||
new DefaultObjectValidator(metadataProvider, new ValidatorCache()),
|
||||
validator);
|
||||
new DefaultObjectValidator(metadataProvider, new[] { validator }));
|
||||
|
||||
// Assert
|
||||
// Includes everything.
|
||||
|
|
@ -509,9 +493,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider: metadataProvider,
|
||||
modelBinderFactory: GetModelBinderFactory(binder),
|
||||
valueProvider: Mock.Of<IValueProvider>(),
|
||||
inputFormatters: new List<IInputFormatter>(),
|
||||
objectModelValidator: new Mock<IObjectModelValidator>(MockBehavior.Strict).Object,
|
||||
validatorProvider: Mock.Of<IModelValidatorProvider>(),
|
||||
propertyFilter: propertyFilter);
|
||||
|
||||
// Assert
|
||||
|
|
@ -566,9 +548,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
GetModelBinderFactory(binderProviders),
|
||||
valueProvider,
|
||||
new List<IInputFormatter>(),
|
||||
new DefaultObjectValidator(metadataProvider, new ValidatorCache()),
|
||||
validator,
|
||||
new DefaultObjectValidator(metadataProvider, new[] { validator }),
|
||||
propertyFilter);
|
||||
|
||||
// Assert
|
||||
|
|
@ -598,9 +578,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider: metadataProvider,
|
||||
modelBinderFactory: GetModelBinderFactory(binder.Object),
|
||||
valueProvider: Mock.Of<IValueProvider>(),
|
||||
inputFormatters: new List<IInputFormatter>(),
|
||||
objectModelValidator: new Mock<IObjectModelValidator>(MockBehavior.Strict).Object,
|
||||
validatorProvider: Mock.Of<IModelValidatorProvider>());
|
||||
objectModelValidator: new Mock<IObjectModelValidator>(MockBehavior.Strict).Object);
|
||||
|
||||
// Assert
|
||||
Assert.False(result);
|
||||
|
|
@ -637,12 +615,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
model.GetType(),
|
||||
"",
|
||||
new ActionContext() { HttpContext = new DefaultHttpContext() },
|
||||
TestModelMetadataProvider.CreateDefaultProvider(),
|
||||
metadataProvider,
|
||||
GetModelBinderFactory(binderProviders),
|
||||
valueProvider,
|
||||
new List<IInputFormatter>(),
|
||||
new DefaultObjectValidator(metadataProvider, new ValidatorCache()),
|
||||
validator);
|
||||
new DefaultObjectValidator(metadataProvider, new[] { validator }));
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -669,9 +645,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
metadataProvider,
|
||||
GetModelBinderFactory(binder.Object),
|
||||
Mock.Of<IValueProvider>(),
|
||||
new List<IInputFormatter>(),
|
||||
new DefaultObjectValidator(metadataProvider, new ValidatorCache()),
|
||||
Mock.Of<IModelValidatorProvider>(),
|
||||
new Mock<IObjectModelValidator>(MockBehavior.Strict).Object,
|
||||
propertyFilter));
|
||||
|
||||
var expectedMessage = string.Format("The model's runtime type '{0}' is not assignable to the type '{1}'." +
|
||||
|
|
@ -1547,7 +1521,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
var modelMetadata = metadataProvider.GetMetadataForProperty(
|
||||
typeof(ModelWithReadOnlyAndSpecialCaseProperties),
|
||||
propertyName);
|
||||
var bindingContext = GetBindingContext(metadataProvider, modelMetadata);
|
||||
var bindingContext = GetBindingContext(modelMetadata);
|
||||
|
||||
var container = new ModelWithReadOnlyAndSpecialCaseProperties();
|
||||
bindingContext.Model = modelMetadata.PropertyGetter(container);
|
||||
|
|
@ -1560,20 +1534,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
|||
var metadataProvider = new EmptyModelMetadataProvider();
|
||||
var metadata = metadataProvider.GetMetadataForType(modelType);
|
||||
|
||||
return GetBindingContext(metadataProvider, metadata);
|
||||
return GetBindingContext(metadata);
|
||||
}
|
||||
|
||||
private static DefaultModelBindingContext GetBindingContext(
|
||||
IModelMetadataProvider metadataProvider,
|
||||
ModelMetadata metadata)
|
||||
private static DefaultModelBindingContext GetBindingContext(ModelMetadata metadata)
|
||||
{
|
||||
var bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ModelMetadata = metadata,
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
MetadataProvider = metadataProvider,
|
||||
},
|
||||
};
|
||||
|
||||
return bindingContext;
|
||||
|
|
|
|||
|
|
@ -40,16 +40,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person3)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person3();
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -86,15 +86,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
Name = "prefix",
|
||||
ParameterType = typeof(Person6)
|
||||
};
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -134,16 +134,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person4)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person4();
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -182,14 +182,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person5)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -222,15 +222,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person3)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -266,15 +266,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
},
|
||||
ParameterType = typeof(Person6)
|
||||
};
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -313,15 +313,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person4)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -358,15 +358,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person5)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -23,15 +23,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(int[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[0]=10¶meter[1]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -67,15 +67,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(int[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?prefix[0]=10&prefix[1]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -107,15 +107,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(int[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?[0]=10&[1]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -147,15 +147,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(int[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -182,15 +182,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[0].Name=bill¶meter[1].Name=lang");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -227,15 +227,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?prefix[0].Name=bill&prefix[1].Name=lang");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -268,15 +268,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?[0].Name=bill&[1].Name=lang");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -309,15 +309,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -32,11 +32,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No data is passed.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -66,11 +66,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No data is passed.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelBindingResult.Value.IsModelSet);
|
||||
|
|
@ -101,11 +101,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No data is passed.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -137,11 +137,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No data is passed.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -172,11 +172,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person2)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -215,11 +215,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -255,11 +255,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
|
|||
|
|
@ -45,17 +45,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
}
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(input));
|
||||
request.ContentType = "application/json;charset=utf-8";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -87,15 +87,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
},
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(input));
|
||||
request.ContentType = "application/json;charset=utf-8";
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var result = await argumentBinding.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var result = await argumentBinding.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -120,17 +120,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ProductViewModel)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(input));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -172,17 +172,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ProductViewModel)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(input));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -213,17 +213,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ProductViewModel)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(input));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -253,17 +253,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(SoftwareViewModel)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(input));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -289,17 +289,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(SoftwareViewModel)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(input));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -332,17 +332,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(SoftwareViewModel)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(input));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -369,17 +369,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(string.Empty));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -409,18 +409,18 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(string.Empty));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var httpContext = operationContext.HttpContext;
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var httpContext = testContext.HttpContext;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -452,17 +452,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person4)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(string.Empty));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -511,17 +511,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person5)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes("{ \"Number\": 5 }"));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -549,17 +549,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person5)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes("{ \"Number\": \"not a number\" }"));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -613,17 +613,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
Name = "param-name",
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(inputText));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
var httpContext = operationContext.HttpContext;
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var httpContext = testContext.HttpContext;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -671,16 +671,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
Name = "param-name",
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(inputText));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -37,15 +37,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
// any valid base64 string
|
||||
var expectedValue = new byte[] { 12, 13 };
|
||||
var value = Convert.ToBase64String(expectedValue);
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create(queryStringKey, value);
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -86,11 +86,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No data is passed.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -120,16 +120,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
// any valid base64 string
|
||||
var value = "four";
|
||||
var expectedValue = Convert.FromBase64String(value);
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("CustomParameter", value);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
|
|||
|
|
@ -36,11 +36,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -70,11 +70,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -107,11 +107,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(CancellationToken)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
|
|||
|
|
@ -31,15 +31,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[0]=10¶meter[1]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -77,15 +77,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -111,15 +111,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ICollection<int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -143,15 +143,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -182,15 +182,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -221,15 +221,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -254,15 +254,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -292,15 +292,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Person2>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[0].Id=10¶meter[1].Id=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -351,15 +351,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Person2>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?prefix[0].Id=10&prefix[1].Id=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -402,15 +402,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ICollection<Person2>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?[0].Id=10&[1].Id=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -453,16 +453,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString =
|
||||
new QueryString("?parameter.index=low¶meter.index=high¶meter[low]=10¶meter[high]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -497,15 +497,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ICollection<Person2>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?index=low&index=high&[high].Id=11&[low].Id=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -548,15 +548,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Person2>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -590,7 +590,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person4)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
var formCollection = new FormCollection(new Dictionary<string, StringValues>()
|
||||
{
|
||||
|
|
@ -603,10 +603,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -648,7 +648,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person5)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
var formCollection = new FormCollection(new Dictionary<string, StringValues>()
|
||||
{
|
||||
|
|
@ -660,10 +660,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -694,15 +694,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ICollection<Address5>),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -919,14 +919,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
var argumentBinder = ModelBindingTestHelper.GetArgumentBinder();
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.Form = new FormCollection(formContent);
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -27,15 +27,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[0].Key=key0¶meter[0].Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -67,15 +67,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[key0]=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -104,16 +104,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString =
|
||||
new QueryString("?parameter.index=low¶meter[low].Key=key0¶meter[low].Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -156,15 +156,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -191,15 +191,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -223,15 +223,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -284,15 +284,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -324,15 +324,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -363,15 +363,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -403,15 +403,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -515,14 +515,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
var argumentBinder = ModelBindingTestHelper.GetArgumentBinder();
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(queryString);
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -36,25 +36,24 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(TypesBundle),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.Form = new FormCollection(new Dictionary<string, StringValues>
|
||||
{
|
||||
{ "name", new[] { "Fred" } },
|
||||
{ "type", new[] { "SomeType" } },
|
||||
{ "typeArray", new[] { "SomeType1", "SomeType2" } },
|
||||
{ "typeList", new[] { "SomeType1", "SomeType2" } },
|
||||
{ "typeDictionary", new[] { "parameter[0].Key=key", "parameter[0].Value=value" } },
|
||||
{ "methodInfo", new[] { "value" } },
|
||||
{ "func", new[] { "value" } },
|
||||
}
|
||||
);
|
||||
{
|
||||
{ "name", new[] { "Fred" } },
|
||||
{ "type", new[] { "SomeType" } },
|
||||
{ "typeArray", new[] { "SomeType1", "SomeType2" } },
|
||||
{ "typeList", new[] { "SomeType1", "SomeType2" } },
|
||||
{ "typeDictionary", new[] { "parameter[0].Key=key", "parameter[0].Value=value" } },
|
||||
{ "methodInfo", new[] { "value" } },
|
||||
{ "func", new[] { "value" } },
|
||||
});
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ??
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ??
|
||||
default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
|
|
|||
|
|
@ -41,17 +41,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
var data = "Some Data Is Better Than No Data.";
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address.Zip", "12345");
|
||||
UpdateRequest(request, data, "Address.File");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -92,16 +92,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
var data = "Some Data Is Better Than No Data.";
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
UpdateRequest(request, data, "CustomParameter");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
// ModelBindingResult
|
||||
|
|
@ -136,12 +136,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No data is passed.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
|
|||
|
|
@ -41,17 +41,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
var data = "Some Data Is Better Than No Data.";
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address.Zip", "12345");
|
||||
UpdateRequest(request, data, "Address.File");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -95,12 +95,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
var data = "some data";
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => UpdateRequest(request, data, "files"));
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var result = await argumentBinder.BindModelAsync(parameter, operationContext) ??
|
||||
var result = await argumentBinder.BindModelAsync(parameter, testContext) ??
|
||||
default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
|
@ -141,12 +141,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ListContainer1),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => UpdateRequest(request, data: null, name: null));
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var result = await argumentBinder.BindModelAsync(parameter, operationContext) ??
|
||||
var result = await argumentBinder.BindModelAsync(parameter, testContext) ??
|
||||
default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
|
@ -186,12 +186,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
var data = "some data";
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => UpdateRequest(request, data, "files"));
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var result = await argumentBinder.BindModelAsync(parameter, operationContext) ??
|
||||
var result = await argumentBinder.BindModelAsync(parameter, testContext) ??
|
||||
default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
|
@ -237,16 +237,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
var data = "Some Data Is Better Than No Data.";
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
UpdateRequest(request, data, "CustomParameter");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
// ModelBindingResult
|
||||
|
|
@ -286,13 +286,13 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No data is passed.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => UpdateRequest(request, data: null, name: null));
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelBindingResult.Value.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -34,15 +34,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the GenericModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.index=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -72,15 +72,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<IFormCollection>)
|
||||
};
|
||||
// Need to have a key here so that the GenericModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?index=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -111,15 +111,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Without a key here so the GenericModelBinder will not recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -205,13 +205,13 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the GenericModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => request.QueryString = new QueryString("?parameter.index=0"));
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -239,13 +239,13 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the GenericModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => request.QueryString = new QueryString("?parameter.index=0"));
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -272,15 +272,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, int>[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[0][0].Key=key0¶meter[0][0].Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -317,15 +317,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, int>[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?[0][0].Key=key0&[0][0].Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -362,15 +362,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, int>[])
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -397,15 +397,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ICollection<KeyValuePair<string, int>>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[0].Key=key0¶meter[0].Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -441,15 +441,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ICollection<KeyValuePair<string, int>>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?[0].Key=key0&[0].Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -485,15 +485,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ICollection<KeyValuePair<string, int>>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -520,16 +520,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, List<int>>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString(
|
||||
"?parameter[0].Key=key0¶meter[0].Value[0]=10¶meter[0].Value[1]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -569,15 +569,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, List<int>>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?[0].Key=key0&[0].Value[0]=10&[0].Value[1]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -617,15 +617,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Dictionary<string, List<int>>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -43,11 +43,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Do not add any headers.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -82,12 +82,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => request.Headers.Add("Header", new[] { "someValue" }));
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -124,12 +124,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => request.Headers.Add("Header", new[] { "someValue" }));
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -170,12 +170,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ListContainer1),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => request.Headers.Add("Header", new[] { "someValue" }));
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var result = await argumentBinder.BindModelAsync(parameter, operationContext) ??
|
||||
var result = await argumentBinder.BindModelAsync(parameter, testContext) ??
|
||||
default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
|
@ -218,12 +218,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(ListContainer2),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => request.Headers.Add("Header", new[] { "someValue" }));
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var result = await argumentBinder.BindModelAsync(parameter, operationContext) ??
|
||||
var result = await argumentBinder.BindModelAsync(parameter, testContext) ??
|
||||
default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
|
@ -280,14 +280,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
Action<HttpRequest> action = r => r.Headers.Add("CustomParameter", new[] { value });
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(action);
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(action);
|
||||
|
||||
// Do not add any headers.
|
||||
var httpContext = operationContext.HttpContext;
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var httpContext = testContext.HttpContext;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
|
|||
|
|
@ -25,15 +25,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(KeyValuePair<string, int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Key=key0¶meter.Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -64,14 +64,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
Name = "parameter",
|
||||
ParameterType = typeof(KeyValuePair<string, int>)
|
||||
};
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Value=10");
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelBindingResult.IsModelSet);
|
||||
|
|
@ -110,14 +110,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
Name = "parameter",
|
||||
ParameterType = typeof(KeyValuePair<string, int>)
|
||||
};
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Value=10");
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelBindingResult.IsModelSet);
|
||||
|
|
@ -147,14 +147,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
Name = "parameter",
|
||||
ParameterType = typeof(KeyValuePair<string, int>)
|
||||
};
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Key=10");
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelBindingResult.IsModelSet);
|
||||
|
|
@ -194,14 +194,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
Name = "parameter",
|
||||
ParameterType = typeof(KeyValuePair<string, int>)
|
||||
};
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Key=10");
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.False(modelBindingResult.IsModelSet);
|
||||
|
|
@ -236,15 +236,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(KeyValuePair<string, int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?prefix.Key=key0&prefix.Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -276,15 +276,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(KeyValuePair<string, int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Key=key0&Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -316,15 +316,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(KeyValuePair<string, int>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -352,15 +352,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(KeyValuePair<string, Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Key=key0¶meter.Value.Id=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -397,15 +397,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(KeyValuePair<string, Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?prefix.Key=key0&prefix.Value.Id=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -438,15 +438,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(KeyValuePair<string, Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Key=key0&Value.Id=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -479,15 +479,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(KeyValuePair<string, Person>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
||||
{
|
||||
public class ModelBindingTestContext : ControllerContext
|
||||
{
|
||||
public IModelMetadataProvider MetadataProvider { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc.ApplicationParts;
|
||||
using Microsoft.AspNetCore.Mvc.Controllers;
|
||||
|
|
@ -18,7 +19,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
{
|
||||
public static class ModelBindingTestHelper
|
||||
{
|
||||
public static OperationBindingContext GetOperationBindingContext(
|
||||
public static ModelBindingTestContext GetTestContext(
|
||||
Action<HttpRequest> updateRequest = null,
|
||||
Action<MvcOptions> updateOptions = null,
|
||||
ControllerActionDescriptor actionDescriptor = null)
|
||||
|
|
@ -26,21 +27,24 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
var httpContext = GetHttpContext(updateRequest, updateOptions);
|
||||
var services = httpContext.RequestServices;
|
||||
|
||||
actionDescriptor = actionDescriptor ?? new ControllerActionDescriptor();
|
||||
|
||||
var actionContext = new ActionContext(httpContext, new RouteData(), actionDescriptor);
|
||||
var controllerContext = GetControllerContext(
|
||||
services.GetRequiredService<IOptions<MvcOptions>>().Value,
|
||||
actionContext);
|
||||
|
||||
return new OperationBindingContext()
|
||||
var context = new ModelBindingTestContext()
|
||||
{
|
||||
ActionContext = controllerContext,
|
||||
InputFormatters = controllerContext.InputFormatters,
|
||||
ActionDescriptor = actionDescriptor ?? new ControllerActionDescriptor(),
|
||||
HttpContext = httpContext,
|
||||
MetadataProvider = TestModelMetadataProvider.CreateDefaultProvider(),
|
||||
ValidatorProvider = new CompositeModelValidatorProvider(controllerContext.ValidatorProviders),
|
||||
ValueProvider = new CompositeValueProvider(controllerContext.ValueProviders),
|
||||
RouteData = new RouteData(),
|
||||
};
|
||||
|
||||
var options = services.GetRequiredService<IOptions<MvcOptions>>();
|
||||
var valueProviderFactoryContext = new ValueProviderFactoryContext(context);
|
||||
foreach (var factory in options.Value.ValueProviderFactories)
|
||||
{
|
||||
factory.CreateValueProviderAsync(valueProviderFactoryContext).GetAwaiter().GetResult();
|
||||
}
|
||||
|
||||
context.ValueProviders = valueProviderFactoryContext.ValueProviders;
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
public static ControllerArgumentBinder GetArgumentBinder(
|
||||
|
|
@ -74,12 +78,24 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
return new ControllerArgumentBinder(
|
||||
metadataProvider,
|
||||
new ModelBinderFactory(metadataProvider, options),
|
||||
GetObjectValidator(metadataProvider));
|
||||
GetObjectValidator(metadataProvider, options));
|
||||
}
|
||||
|
||||
public static IObjectModelValidator GetObjectValidator(IModelMetadataProvider metadataProvider)
|
||||
public static IObjectModelValidator GetObjectValidator(
|
||||
IModelMetadataProvider metadataProvider,
|
||||
IOptions<MvcOptions> options = null)
|
||||
{
|
||||
return new DefaultObjectValidator(metadataProvider, new ValidatorCache());
|
||||
IList<IModelValidatorProvider> validatorProviders;
|
||||
if (options == null)
|
||||
{
|
||||
validatorProviders = TestModelValidatorProvider.CreateDefaultProvider().ValidatorProviders;
|
||||
}
|
||||
else
|
||||
{
|
||||
validatorProviders = options.Value.ModelValidatorProviders;
|
||||
}
|
||||
|
||||
return new DefaultObjectValidator(metadataProvider, validatorProviders);
|
||||
}
|
||||
|
||||
private static HttpContext GetHttpContext(
|
||||
|
|
@ -124,8 +140,6 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
|
||||
return new ControllerContext(context)
|
||||
{
|
||||
InputFormatters = options.InputFormatters,
|
||||
ValidatorProviders = options.ModelValidatorProviders,
|
||||
ValueProviders = valueProviderFactoryContext.ValueProviders
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person1),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
// This will cause selection of the "parameter" prefix.
|
||||
request.QueryString = new QueryString("?parameter=");
|
||||
|
|
@ -44,10 +44,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
});
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -82,7 +82,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
},
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
// This will cause selection of the "parameter" prefix.
|
||||
request.QueryString = new QueryString("?parameter=");
|
||||
|
|
@ -94,10 +94,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
});
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -128,16 +128,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person3),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
// This can't be used because of [FromForm] on the property.
|
||||
request.QueryString = new QueryString("?Name=");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -172,7 +172,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
},
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
// This will only match empty prefix, but can't be used because of [FromForm] on the property.
|
||||
request.QueryString = new QueryString("?Name=");
|
||||
|
|
@ -184,10 +184,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
});
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -222,7 +222,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
},
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
// This value won't be used to select a prefix, because we're only looking at the query string.
|
||||
request.Form = new FormCollection(new Dictionary<string, StringValues>()
|
||||
|
|
@ -231,10 +231,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
});
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -57,16 +57,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=bill");
|
||||
SetJsonBodyContent(request, AddressBodyContent);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -98,16 +98,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Customer.Name=bill");
|
||||
SetJsonBodyContent(request, AddressBodyContent);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -139,16 +139,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=bill");
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -181,16 +181,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.ProductId=10");
|
||||
SetJsonBodyContent(request, AddressBodyContent);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -222,16 +222,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
SetJsonBodyContent(request, AddressBodyContent);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -270,16 +270,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString =
|
||||
new QueryString("?parameter.Customer.Name=bill¶meter.Customer.Token=" + ByteArrayEncoded);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -314,15 +314,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Customer.Name=bill&Customer.Token=" + ByteArrayEncoded);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -357,15 +357,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -410,16 +410,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=bill");
|
||||
SetFormFileBodyContent(request, "Hello, World!", "parameter.Customer.Documents");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -454,16 +454,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Customer.Name=bill");
|
||||
SetFormFileBodyContent(request, "Hello, World!", "Customer.Documents");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -498,17 +498,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=bill");
|
||||
|
||||
// Deliberately leaving out any form data.
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -542,16 +542,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.ProductId=10");
|
||||
SetFormFileBodyContent(request, "Hello, World!", "parameter.Customer.Documents");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -583,16 +583,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
SetFormFileBodyContent(request, "Hello, World!", "parameter.Customer.Documents");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -624,16 +624,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString =
|
||||
new QueryString("?parameter.Name=bill¶meter.ProductIds[0]=10¶meter.ProductIds[1]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -671,15 +671,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Name=bill&ProductIds[0]=10&ProductIds[1]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -717,15 +717,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -755,15 +755,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -796,16 +796,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString =
|
||||
new QueryString("?parameter.Name=bill¶meter.ProductIds[0]=10¶meter.ProductIds[1]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -843,15 +843,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Name=bill&ProductIds[0]=10&ProductIds[1]=11");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -889,15 +889,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -927,15 +927,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -968,16 +968,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString =
|
||||
new QueryString("?parameter.Name=bill¶meter.ProductIds[0].Key=key0¶meter.ProductIds[0].Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1015,15 +1015,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Name=bill&ProductIds[0].Key=key0&ProductIds[0].Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1061,15 +1061,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1099,15 +1099,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1140,16 +1140,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString =
|
||||
new QueryString("?parameter.Name=bill¶meter.ProductId.Key=key0¶meter.ProductId.Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1187,15 +1187,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Name=bill&ProductId.Key=key0&ProductId.Value=10");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1233,15 +1233,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1271,15 +1271,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1318,16 +1318,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
SetJsonBodyContent(request, AddressBodyContent);
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1366,12 +1366,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1412,12 +1412,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1461,15 +1461,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Id=123");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1506,15 +1506,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Customer.Id=123");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1555,15 +1555,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?customParameter.Customer.Id=123");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1606,15 +1606,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1649,15 +1649,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1688,15 +1688,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?ProductName=abc");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1731,15 +1731,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1774,15 +1774,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1813,15 +1813,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?OrderIds[0]=123");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1857,15 +1857,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.ProductId=");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1901,15 +1901,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Need to have a key here so that the MutableObjectModelBinder will recurse to bind elements.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.ProductId");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -31,11 +31,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(JsonOutputFormatter)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -68,11 +68,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(JsonOutputFormatter),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
// ModelBindingResult
|
||||
|
|
@ -104,11 +104,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(IEnumerable<JsonOutputFormatter>),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
// ModelBindingResult
|
||||
|
|
@ -140,11 +140,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(IEnumerable<IActionResult>),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
// ModelBindingResult
|
||||
|
|
@ -176,11 +176,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(IActionResult),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
|
||||
// Act & Assert
|
||||
var exception = await Assert.ThrowsAsync<InvalidOperationException>(
|
||||
() => argumentBinder.BindModelAsync(parameter, operationContext));
|
||||
() => argumentBinder.BindModelAsync(parameter, testContext));
|
||||
Assert.Contains(typeof(IActionResult).FullName, exception.Message);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,15 +32,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("CustomParameter.Address.Zip", "1");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -76,15 +76,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address.Zip", "1");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -121,15 +121,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(string)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Parameter1", "someValue");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -165,15 +165,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(string)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Parameter1=someValue&Parameter1=otherValue");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -209,15 +209,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(int)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Parameter1", "abcd");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -267,15 +267,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = parameterType
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Parameter1", "abcd");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -317,14 +317,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
|
||||
ParameterType = parameterType
|
||||
};
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Parameter1", "");
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -369,14 +369,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
|
||||
ParameterType = parameterType
|
||||
};
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Parameter1", string.Empty);
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
// ModelBindingResult
|
||||
|
|
@ -412,14 +412,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
|
||||
ParameterType = parameterType
|
||||
};
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Parameter1", string.Empty);
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -452,12 +452,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// No Data.
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
||||
|
|
@ -504,14 +504,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Person),
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.Form = new FormCollection(personStore);
|
||||
});
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ??
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ??
|
||||
default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
|
|
|
|||
|
|
@ -27,12 +27,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_ExistingModel_EmptyPrefix_OverwritesBoundValues()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Address
|
||||
{
|
||||
Street = "DefaultStreet",
|
||||
|
|
@ -41,7 +41,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
var oldModel = model;
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -67,16 +67,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_ExistingModel_EmptyPrefix_GetsBound()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Address();
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -108,7 +108,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_TopLevelCollection_EmptyPrefix_BindsAfterClearing()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create(new Dictionary<string, string>
|
||||
{
|
||||
|
|
@ -117,7 +117,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
});
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new List<Person1>
|
||||
{
|
||||
new Person1
|
||||
|
|
@ -134,7 +134,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -166,12 +166,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_NestedPoco_EmptyPrefix_DoesNotTrounceUnboundValues()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address.Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person1
|
||||
{
|
||||
Name = "Joe",
|
||||
|
|
@ -184,7 +184,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
var oldModel = model;
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -216,16 +216,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_SettableCollectionModel_EmptyPrefix_CreatesCollection()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person2();
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -252,12 +252,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_SettableCollectionModel_EmptyPrefix_MaintainsCollectionIfNonNull()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person2
|
||||
{
|
||||
Address = new List<Address>(),
|
||||
|
|
@ -265,7 +265,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
var collection = model.Address;
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -303,12 +303,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_NonSettableCollectionModel_EmptyPrefix_GetsBound()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person3
|
||||
{
|
||||
Address =
|
||||
|
|
@ -327,7 +327,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -358,16 +358,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_ReadOnlyCollectionModel_EmptyPrefix_DoesNotGetBound()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person6();
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -397,16 +397,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_SettableArrayModel_EmptyPrefix_CreatesArray()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person4();
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -433,12 +433,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_SettableArrayModel_EmptyPrefix_OverwritesArray()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person4
|
||||
{
|
||||
Address = new Address[]
|
||||
|
|
@ -453,7 +453,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
var collection = model.Address;
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -486,16 +486,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_NonSettableArrayModel_EmptyPrefix_GetsBound()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person5();
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, string.Empty, operationContext);
|
||||
var result = await TryUpdateModel(model, string.Empty, testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -516,12 +516,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_ExistingModel_WithPrefix_ValuesGetOverwritten()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Address
|
||||
{
|
||||
Street = "DefaultStreet",
|
||||
|
|
@ -530,7 +530,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
var oldModel = model;
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -556,16 +556,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_ExistingModel_WithPrefix_GetsBound()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Address();
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -590,7 +590,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_TopLevelCollection_WithPrefix_BindsAfterClearing()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create(new Dictionary<string, string>
|
||||
{
|
||||
|
|
@ -599,7 +599,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
});
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new List<Person1>
|
||||
{
|
||||
new Person1
|
||||
|
|
@ -616,7 +616,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -648,12 +648,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_NestedPoco_WithPrefix_DoesNotTrounceUnboundValues()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address.Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person1
|
||||
{
|
||||
Name = "Joe",
|
||||
|
|
@ -666,7 +666,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
var oldModel = model;
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -693,16 +693,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_SettableCollectionModel_WithPrefix_CreatesCollection()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person2();
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -729,12 +729,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_SettableCollectionModel_WithPrefix_MaintainsCollectionIfNonNull()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person2
|
||||
{
|
||||
Address = new List<Address>(),
|
||||
|
|
@ -742,7 +742,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
var collection = model.Address;
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -770,12 +770,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_NonSettableCollectionModel_WithPrefix_GetsBound()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person3
|
||||
{
|
||||
Address =
|
||||
|
|
@ -794,7 +794,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -820,16 +820,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_ReadOnlyCollectionModel_WithPrefix_DoesNotGetBound()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person6();
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -854,16 +854,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_SettableArrayModel_WithPrefix_CreatesArray()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person4();
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -890,12 +890,12 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_SettableArrayModel_WithPrefix_OverwritesArray()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person4
|
||||
{
|
||||
Address = new Address[]
|
||||
|
|
@ -910,7 +910,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
var collection = model.Address;
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -938,16 +938,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public async Task TryUpdateModel_NonSettableArrayModel_WithPrefix_GetsBound()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = QueryString.Create("prefix.Address[0].Street", "SomeStreet");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new Person5();
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, "prefix", operationContext);
|
||||
var result = await TryUpdateModel(model, "prefix", testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -968,9 +968,9 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
{
|
||||
// Arrange
|
||||
var data = "some data";
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request => UpdateRequest(request, data, "files"));
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new List<IFormFile>
|
||||
{
|
||||
new FormFile(new MemoryStream(), baseStreamOffset: 0, length: 0, name: "file", fileName: "file1"),
|
||||
|
|
@ -979,7 +979,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
|
||||
// Act
|
||||
var result = await TryUpdateModel(model, prefix: "files", operationContext: operationContext);
|
||||
var result = await TryUpdateModel(model, prefix: "files", testContext: testContext);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
|
|
@ -1088,19 +1088,17 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
private Task<bool> TryUpdateModel(
|
||||
object model,
|
||||
string prefix,
|
||||
OperationBindingContext operationContext)
|
||||
ModelBindingTestContext testContext)
|
||||
{
|
||||
return ModelBindingHelper.TryUpdateModelAsync(
|
||||
model,
|
||||
model.GetType(),
|
||||
prefix,
|
||||
operationContext.ActionContext,
|
||||
operationContext.MetadataProvider,
|
||||
testContext,
|
||||
testContext.MetadataProvider,
|
||||
TestModelBinderFactory.CreateDefault(),
|
||||
operationContext.ValueProvider,
|
||||
operationContext.InputFormatters,
|
||||
ModelBindingTestHelper.GetObjectValidator(operationContext.MetadataProvider),
|
||||
operationContext.ValidatorProvider);
|
||||
new CompositeValueProvider(testContext.ValueProviders),
|
||||
ModelBindingTestHelper.GetObjectValidator(testContext.MetadataProvider));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6,6 +6,8 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
using Microsoft.AspNetCore.Testing;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
||||
|
|
@ -16,9 +18,9 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public void ModelState_IsInvalid_ForInvalidData_OnDerivedModel()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new SoftwareViewModel
|
||||
{
|
||||
Category = "Technology",
|
||||
|
|
@ -29,14 +31,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
Price = 110,
|
||||
Version = "2"
|
||||
};
|
||||
var oldModel = model;
|
||||
|
||||
var controller = CreateController(testContext, testContext.MetadataProvider);
|
||||
|
||||
// Act
|
||||
var result = TryValidateModel(model, "software", operationContext);
|
||||
var result = controller.TryValidateModel(model, prefix: "software");
|
||||
|
||||
// Assert
|
||||
Assert.False(result);
|
||||
Assert.Same(oldModel, model);
|
||||
Assert.False(modelState.IsValid);
|
||||
var modelStateErrors = GetModelStateErrors(modelState);
|
||||
Assert.Single(modelStateErrors);
|
||||
|
|
@ -47,8 +49,8 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public void ModelState_IsValid_ForValidData_OnDerivedModel()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new SoftwareViewModel
|
||||
{
|
||||
Category = "Technology",
|
||||
|
|
@ -60,14 +62,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
Price = 110,
|
||||
Version = "2"
|
||||
};
|
||||
var oldModel = model;
|
||||
|
||||
var controller = CreateController(testContext, testContext.MetadataProvider);
|
||||
|
||||
// Act
|
||||
var result = TryValidateModel(model, prefix: string.Empty, operationContext: operationContext);
|
||||
var result = controller.TryValidateModel(model);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
Assert.Same(oldModel, model);
|
||||
Assert.True(modelState.IsValid);
|
||||
var modelStateErrors = GetModelStateErrors(modelState);
|
||||
Assert.Empty(modelStateErrors);
|
||||
|
|
@ -77,8 +79,8 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
public void TryValidateModel_CollectionsModel_ReturnsErrorsForInvalidProperties()
|
||||
{
|
||||
// Arrange
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
var modelState = testContext.ModelState;
|
||||
var model = new List<ProductViewModel>();
|
||||
model.Add(new ProductViewModel()
|
||||
{
|
||||
|
|
@ -102,10 +104,11 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
Detail3 = "d3"
|
||||
}
|
||||
});
|
||||
var oldModel = model;
|
||||
|
||||
var controller = CreateController(testContext, testContext.MetadataProvider);
|
||||
|
||||
// Act
|
||||
var result = TryValidateModel(model, prefix: string.Empty, operationContext: operationContext);
|
||||
var result = controller.TryValidateModel(model);
|
||||
|
||||
// Assert
|
||||
Assert.False(result);
|
||||
|
|
@ -133,18 +136,18 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
modelStateErrors["[1].Contact"]);
|
||||
}
|
||||
|
||||
private bool TryValidateModel(
|
||||
object model,
|
||||
string prefix,
|
||||
OperationBindingContext operationContext)
|
||||
private TestController CreateController(
|
||||
ActionContext actionContext,
|
||||
IModelMetadataProvider metadataProvider)
|
||||
{
|
||||
var controller = new TestController();
|
||||
controller.ControllerContext = new ControllerContext(operationContext.ActionContext);
|
||||
controller.ObjectValidator = ModelBindingTestHelper.GetObjectValidator(operationContext.MetadataProvider);
|
||||
controller.MetadataProvider = operationContext.MetadataProvider;
|
||||
controller.ControllerContext.ValidatorProviders = new[] { operationContext.ValidatorProvider }.ToList();
|
||||
var options = actionContext.HttpContext.RequestServices.GetRequiredService<IOptions<MvcOptions>>();
|
||||
|
||||
return controller.TryValidateModel(model, prefix);
|
||||
var controller = new TestController();
|
||||
controller.ControllerContext = new ControllerContext(actionContext);
|
||||
controller.ObjectValidator = ModelBindingTestHelper.GetObjectValidator(metadataProvider, options);
|
||||
controller.MetadataProvider = metadataProvider;
|
||||
|
||||
return controller;
|
||||
}
|
||||
|
||||
private void AssertErrorEquals(string expected, string actual)
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
var argumentBinder = ModelBindingTestHelper.GetArgumentBinder();
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?accountId=30");
|
||||
|
|
@ -99,11 +99,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
},
|
||||
actionDescriptor: actionDescriptor);
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var arguments = await argumentBinder.BindActionArgumentsAsync(
|
||||
(ControllerContext)operationContext.ActionContext, new TestController());
|
||||
var arguments = await argumentBinder.BindActionArgumentsAsync(testContext, new TestController());
|
||||
|
||||
// Assert
|
||||
Assert.False(modelState.IsValid);
|
||||
|
|
@ -130,7 +129,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
};
|
||||
var argumentBinder = ModelBindingTestHelper.GetArgumentBinder();
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?accountId=10");
|
||||
|
|
@ -139,11 +138,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
},
|
||||
actionDescriptor: actionDescriptor);
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var arguments = await argumentBinder.BindActionArgumentsAsync(
|
||||
(ControllerContext)operationContext.ActionContext, new TestController());
|
||||
var arguments = await argumentBinder.BindActionArgumentsAsync(testContext, new TestController());
|
||||
|
||||
// Assert
|
||||
Assert.True(modelState.IsValid);
|
||||
|
|
@ -175,15 +173,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order1)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.CustomerName=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -212,15 +210,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order1)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -263,15 +261,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order2)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -301,15 +299,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order2)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -354,15 +352,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order3)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -392,16 +390,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order3)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
// Force creation of the Customer model.
|
||||
request.QueryString = new QueryString("?parameter.Customer.Age=17");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -446,15 +444,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order4)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Items[0].ItemId=17");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -484,16 +482,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order4)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
// Force creation of the Customer model.
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -533,15 +531,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Order5>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[0].ProductId=17");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -570,16 +568,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Order5>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
// Force creation of the Customer model.
|
||||
request.QueryString = new QueryString("?parameter[0].Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -619,15 +617,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order6)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -656,15 +654,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order6)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Name=billybob");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -707,15 +705,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order7)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -744,15 +742,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order7)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=billybob");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -784,15 +782,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order7)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -842,15 +840,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order8)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -879,15 +877,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order8)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Customer.Name=billybob");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -949,15 +947,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order9)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Products[0].Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -986,15 +984,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Order9)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter.Products[0].Name=billybob");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1037,15 +1035,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Order10>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[0].Name=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1074,15 +1072,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Order10>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?parameter[0].Name=billybob");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1114,15 +1112,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(List<Order10>)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1154,15 +1152,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(User)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Id=bill");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1194,15 +1192,15 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(User)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(request =>
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(request =>
|
||||
{
|
||||
request.QueryString = new QueryString("?Zip=-123");
|
||||
});
|
||||
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1262,7 +1260,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
|
||||
MvcOptions testOptions = null;
|
||||
var input = "{\"Zip\":\"47\"}";
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.QueryString =
|
||||
|
|
@ -1277,10 +1275,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
});
|
||||
|
||||
var argumentBinder = ModelBindingTestHelper.GetArgumentBinder(testOptions);
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext);
|
||||
|
||||
Assert.Equal(3, modelState.Count);
|
||||
Assert.Equal(0, modelState.ErrorCount);
|
||||
|
|
@ -1318,22 +1316,22 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(JToken)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes("{ message: \"Hello\" }"));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var httpContext = operationContext.HttpContext;
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var httpContext = testContext.HttpContext;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// We need to add another model state entry which should get marked as skipped so
|
||||
// we can prove that the JObject was skipped.
|
||||
modelState.SetModelValue("CustomParameter.message", "Hello", "Hello");
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1367,16 +1365,16 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(CancellationToken)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext();
|
||||
var testContext = ModelBindingTestHelper.GetTestContext();
|
||||
|
||||
var httpContext = operationContext.HttpContext;
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var httpContext = testContext.HttpContext;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// We need to add another model state entry - we want this to be ignored.
|
||||
modelState.SetModelValue("message", "Hello", "Hello");
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1407,21 +1405,21 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Greeting)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
request.Body = new MemoryStream(Encoding.UTF8.GetBytes("{ message: \"Hello\" }"));
|
||||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var httpContext = operationContext.HttpContext;
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var httpContext = testContext.HttpContext;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// We need to add another model state entry which should not get changed.
|
||||
modelState.SetModelValue("other.key", "1", "1");
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
@ -1453,7 +1451,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
ParameterType = typeof(Greeting)
|
||||
};
|
||||
|
||||
var operationContext = ModelBindingTestHelper.GetOperationBindingContext(
|
||||
var testContext = ModelBindingTestHelper.GetTestContext(
|
||||
request =>
|
||||
{
|
||||
// This string is too long and will have a validation error.
|
||||
|
|
@ -1461,14 +1459,14 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
|
|||
request.ContentType = "application/json";
|
||||
});
|
||||
|
||||
var httpContext = operationContext.HttpContext;
|
||||
var modelState = operationContext.ActionContext.ModelState;
|
||||
var httpContext = testContext.HttpContext;
|
||||
var modelState = testContext.ModelState;
|
||||
|
||||
// We need to add another model state entry which should not get changed.
|
||||
modelState.SetModelValue("other.key", "1", "1");
|
||||
|
||||
// Act
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, operationContext) ?? default(ModelBindingResult);
|
||||
var modelBindingResult = await argumentBinder.BindModelAsync(parameter, testContext) ?? default(ModelBindingResult);
|
||||
|
||||
// Assert
|
||||
Assert.True(modelBindingResult.IsModelSet);
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
|
|||
internal class TestModelValidatorProvider : CompositeModelValidatorProvider
|
||||
{
|
||||
// Creates a provider with all the defaults - includes data annotations
|
||||
public static IModelValidatorProvider CreateDefaultProvider()
|
||||
public static CompositeModelValidatorProvider CreateDefaultProvider()
|
||||
{
|
||||
var providers = new IModelValidatorProvider[]
|
||||
{
|
||||
|
|
|
|||
|
|
@ -279,24 +279,25 @@ namespace Microsoft.AspNetCore.Mvc.Test
|
|||
var viewData = new ViewDataDictionary(metadataProvider, new ModelStateDictionary());
|
||||
var tempData = new TempDataDictionary(httpContext, Mock.Of<ITempDataProvider>());
|
||||
|
||||
var valiatorProviders = new[]
|
||||
{
|
||||
new DataAnnotationsModelValidatorProvider(
|
||||
new ValidationAttributeAdapterProvider(),
|
||||
new TestOptionsManager<MvcDataAnnotationsLocalizationOptions>(),
|
||||
stringLocalizerFactory: null),
|
||||
};
|
||||
|
||||
var controllerContext = new ControllerContext()
|
||||
{
|
||||
HttpContext = httpContext,
|
||||
ValueProviders = new[] { valueProvider, },
|
||||
ValidatorProviders = new[]
|
||||
{
|
||||
new DataAnnotationsModelValidatorProvider(
|
||||
new ValidationAttributeAdapterProvider(),
|
||||
new TestOptionsManager<MvcDataAnnotationsLocalizationOptions>(),
|
||||
stringLocalizerFactory: null),
|
||||
},
|
||||
};
|
||||
|
||||
var controller = new TestableController()
|
||||
{
|
||||
ControllerContext = controllerContext,
|
||||
MetadataProvider = metadataProvider,
|
||||
ObjectValidator = new DefaultObjectValidator(metadataProvider, new ValidatorCache()),
|
||||
ObjectValidator = new DefaultObjectValidator(metadataProvider, valiatorProviders),
|
||||
TempData = tempData,
|
||||
ViewData = viewData,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.Mvc.WebApiCompatShim
|
|||
// Arrange
|
||||
var binder = new HttpRequestMessageModelBinder();
|
||||
var bindingContext = GetBindingContext(typeof(HttpRequestMessage));
|
||||
var expectedModel = bindingContext.OperationBindingContext.HttpContext.GetHttpRequestMessage();
|
||||
var expectedModel = bindingContext.HttpContext.GetHttpRequestMessage();
|
||||
|
||||
// Act
|
||||
await binder.BindModelAsync(bindingContext);
|
||||
|
|
@ -42,20 +42,16 @@ namespace Microsoft.AspNetCore.Mvc.WebApiCompatShim
|
|||
var metadataProvider = new EmptyModelMetadataProvider();
|
||||
DefaultModelBindingContext bindingContext = new DefaultModelBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
ModelMetadata = metadataProvider.GetMetadataForType(modelType),
|
||||
ModelName = "someName",
|
||||
OperationBindingContext = new OperationBindingContext
|
||||
{
|
||||
ActionContext = new ActionContext()
|
||||
{
|
||||
HttpContext = new DefaultHttpContext(),
|
||||
},
|
||||
MetadataProvider = metadataProvider,
|
||||
},
|
||||
ValidationState = new ValidationStateDictionary(),
|
||||
};
|
||||
|
||||
bindingContext.OperationBindingContext.HttpContext.Request.Method = "GET";
|
||||
bindingContext.HttpContext.Request.Method = "GET";
|
||||
|
||||
return bindingContext;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue