@@ -211,6 +211,52 @@ public void OnProvidersExecuting_AddsBindingSources_ForActionParameters_WithLega
211
211
} ) ;
212
212
}
213
213
214
+ [ Fact ]
215
+ public void OnProvidersExecuting_InfersFormFileSourceForTypesAssignableFromIEnumerableOfFormFiles ( )
216
+ {
217
+ // Arrange
218
+ var builder = new TestApplicationModelProvider (
219
+ new MvcOptions { AllowValidatingTopLevelNodes = true } ,
220
+ TestModelMetadataProvider . CreateDefaultProvider ( ) ) ;
221
+ var typeInfo = typeof ( ModelBinderController ) . GetTypeInfo ( ) ;
222
+
223
+ var context = new ApplicationModelProviderContext ( new [ ] { typeInfo } ) ;
224
+
225
+ // Act
226
+ builder . OnProvidersExecuting ( context ) ;
227
+
228
+ // Assert
229
+ var controllerModel = Assert . Single ( context . Result . Controllers ) ;
230
+ var action = Assert . Single ( controllerModel . Actions , a => a . ActionMethod . Name == nameof ( ModelBinderController . FormFilesSequences ) ) ;
231
+ Assert . Collection (
232
+ action . Parameters ,
233
+ parameter =>
234
+ {
235
+ Assert . Equal ( "formFileEnumerable" , parameter . ParameterName ) ;
236
+ Assert . Equal ( BindingSource . FormFile , parameter . BindingInfo . BindingSource ) ;
237
+ } ,
238
+ parameter =>
239
+ {
240
+ Assert . Equal ( "formFileCollection" , parameter . ParameterName ) ;
241
+ Assert . Equal ( BindingSource . FormFile , parameter . BindingInfo . BindingSource ) ;
242
+ } ,
243
+ parameter =>
244
+ {
245
+ Assert . Equal ( "formFileIList" , parameter . ParameterName ) ;
246
+ Assert . Equal ( BindingSource . FormFile , parameter . BindingInfo . BindingSource ) ;
247
+ } ,
248
+ parameter =>
249
+ {
250
+ Assert . Equal ( "formFileList" , parameter . ParameterName ) ;
251
+ Assert . Equal ( BindingSource . FormFile , parameter . BindingInfo . BindingSource ) ;
252
+ } ,
253
+ parameter =>
254
+ {
255
+ Assert . Equal ( "formFileArray" , parameter . ParameterName ) ;
256
+ Assert . Equal ( BindingSource . FormFile , parameter . BindingInfo . BindingSource ) ;
257
+ } ) ;
258
+ }
259
+
214
260
[ Fact ]
215
261
public void OnProvidersExecuting_AddsBindingSources_ForActionParameters_ReadFromModelMetadata ( )
216
262
{
@@ -1625,6 +1671,13 @@ public class ModelBinderController
1625
1671
1626
1672
public IActionResult PostAction ( [ FromQuery ] string fromQuery , IFormFileCollection formFileCollection , string unbound ) => null ;
1627
1673
1674
+ public IActionResult FormFilesSequences (
1675
+ IEnumerable < IFormFile > formFileEnumerable ,
1676
+ ICollection < IFormFile > formFileCollection ,
1677
+ IList < IFormFile > formFileIList ,
1678
+ List < IFormFile > formFileList ,
1679
+ IFormFile [ ] formFileArray ) => null ;
1680
+
1628
1681
public IActionResult PostAction1 ( Guid guid ) => null ;
1629
1682
1630
1683
public IActionResult PostAction2 ( [ FromQuery ] Guid fromQuery ) => null ;
0 commit comments