parent
077b1d87a9
commit
49c653ed0b
|
|
@ -96,6 +96,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
||||||
modelMetadataDetailsProviders.Add(new BindingSourceMetadataProvider(typeof(IFormFile), BindingSource.FormFile));
|
modelMetadataDetailsProviders.Add(new BindingSourceMetadataProvider(typeof(IFormFile), BindingSource.FormFile));
|
||||||
modelMetadataDetailsProviders.Add(new BindingSourceMetadataProvider(typeof(IFormCollection), BindingSource.FormFile));
|
modelMetadataDetailsProviders.Add(new BindingSourceMetadataProvider(typeof(IFormCollection), BindingSource.FormFile));
|
||||||
modelMetadataDetailsProviders.Add(new BindingSourceMetadataProvider(typeof(IFormFileCollection), BindingSource.FormFile));
|
modelMetadataDetailsProviders.Add(new BindingSourceMetadataProvider(typeof(IFormFileCollection), BindingSource.FormFile));
|
||||||
|
modelMetadataDetailsProviders.Add(new BindingSourceMetadataProvider(typeof(IEnumerable<IFormFile>), BindingSource.FormFile));
|
||||||
|
|
||||||
// Add types to be excluded from Validation
|
// Add types to be excluded from Validation
|
||||||
modelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(Type)));
|
modelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(Type)));
|
||||||
|
|
|
||||||
|
|
@ -211,6 +211,52 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void OnProvidersExecuting_InfersFormFileSourceForTypesAssignableFromIEnumerableOfFormFiles()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var builder = new TestApplicationModelProvider(
|
||||||
|
new MvcOptions { AllowValidatingTopLevelNodes = true },
|
||||||
|
TestModelMetadataProvider.CreateDefaultProvider());
|
||||||
|
var typeInfo = typeof(ModelBinderController).GetTypeInfo();
|
||||||
|
|
||||||
|
var context = new ApplicationModelProviderContext(new[] { typeInfo });
|
||||||
|
|
||||||
|
// Act
|
||||||
|
builder.OnProvidersExecuting(context);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
var controllerModel = Assert.Single(context.Result.Controllers);
|
||||||
|
var action = Assert.Single(controllerModel.Actions, a => a.ActionMethod.Name == nameof(ModelBinderController.FormFilesSequences));
|
||||||
|
Assert.Collection(
|
||||||
|
action.Parameters,
|
||||||
|
parameter =>
|
||||||
|
{
|
||||||
|
Assert.Equal("formFileEnumerable", parameter.ParameterName);
|
||||||
|
Assert.Equal(BindingSource.FormFile, parameter.BindingInfo.BindingSource);
|
||||||
|
},
|
||||||
|
parameter =>
|
||||||
|
{
|
||||||
|
Assert.Equal("formFileCollection", parameter.ParameterName);
|
||||||
|
Assert.Equal(BindingSource.FormFile, parameter.BindingInfo.BindingSource);
|
||||||
|
},
|
||||||
|
parameter =>
|
||||||
|
{
|
||||||
|
Assert.Equal("formFileIList", parameter.ParameterName);
|
||||||
|
Assert.Equal(BindingSource.FormFile, parameter.BindingInfo.BindingSource);
|
||||||
|
},
|
||||||
|
parameter =>
|
||||||
|
{
|
||||||
|
Assert.Equal("formFileList", parameter.ParameterName);
|
||||||
|
Assert.Equal(BindingSource.FormFile, parameter.BindingInfo.BindingSource);
|
||||||
|
},
|
||||||
|
parameter =>
|
||||||
|
{
|
||||||
|
Assert.Equal("formFileArray", parameter.ParameterName);
|
||||||
|
Assert.Equal(BindingSource.FormFile, parameter.BindingInfo.BindingSource);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void OnProvidersExecuting_AddsBindingSources_ForActionParameters_ReadFromModelMetadata()
|
public void OnProvidersExecuting_AddsBindingSources_ForActionParameters_ReadFromModelMetadata()
|
||||||
{
|
{
|
||||||
|
|
@ -1625,6 +1671,13 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
||||||
|
|
||||||
public IActionResult PostAction([FromQuery] string fromQuery, IFormFileCollection formFileCollection, string unbound) => null;
|
public IActionResult PostAction([FromQuery] string fromQuery, IFormFileCollection formFileCollection, string unbound) => null;
|
||||||
|
|
||||||
|
public IActionResult FormFilesSequences(
|
||||||
|
IEnumerable<IFormFile> formFileEnumerable,
|
||||||
|
ICollection<IFormFile> formFileCollection,
|
||||||
|
IList<IFormFile> formFileIList,
|
||||||
|
List<IFormFile> formFileList,
|
||||||
|
IFormFile[] formFileArray) => null;
|
||||||
|
|
||||||
public IActionResult PostAction1(Guid guid) => null;
|
public IActionResult PostAction1(Guid guid) => null;
|
||||||
|
|
||||||
public IActionResult PostAction2([FromQuery] Guid fromQuery) => null;
|
public IActionResult PostAction2([FromQuery] Guid fromQuery) => null;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
@ -189,6 +190,12 @@ namespace Microsoft.AspNetCore.Mvc
|
||||||
Assert.Equal(BindingSource.FormFile, formFileParameter.BindingSource);
|
Assert.Equal(BindingSource.FormFile, formFileParameter.BindingSource);
|
||||||
},
|
},
|
||||||
provider =>
|
provider =>
|
||||||
|
{
|
||||||
|
var formFileParameter = Assert.IsType<BindingSourceMetadataProvider>(provider);
|
||||||
|
Assert.Equal(typeof(IEnumerable<IFormFile>), formFileParameter.Type);
|
||||||
|
Assert.Equal(BindingSource.FormFile, formFileParameter.BindingSource);
|
||||||
|
},
|
||||||
|
provider =>
|
||||||
{
|
{
|
||||||
var excludeFilter = Assert.IsType<SuppressChildValidationMetadataProvider>(provider);
|
var excludeFilter = Assert.IsType<SuppressChildValidationMetadataProvider>(provider);
|
||||||
Assert.Equal(typeof(Type), excludeFilter.Type);
|
Assert.Equal(typeof(Type), excludeFilter.Type);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue