views:

71

answers:

2

This the html form:

<input id="picture1" name="Input_Pictures" type="file" value="" />
<input id="picture2" name="Input_Pictures" type="file" value="" />
<input id="picture3" name="Input_Pictures" type="file" value="" />

I also tried:

<input id="picture1" name="Input_Pictures[]" type="file" value="" />
<input id="picture2" name="Input_Pictures[]" type="file" value="" />
<input id="picture3" name="Input_Pictures[]" type="file" value="" />

and also too:

<input id="picture1" name="Input_Pictures[0]" type="file" value="" />
<input id="picture2" name="Input_Pictures[1]" type="file" value="" />
<input id="picture3" name="Input_Pictures[2]" type="file" value="" />

This is my view model:

public class PicturesInputViewModel
{
     public IEnumerable<HttpPostedFileBase> Pictures { get; set; }
}

And this is the submit action:

[HttpPost]
public ActionResult Submit(PicturesInputViewModel input)      
{

I can see the files in Request.Files collection, but Pictures is always null.

How can I solve this binding problem?


For the mean time I using this code successfully:

 var pics = new List<HttpPostedFileBase>();
 foreach (string name in Request.Files)
 {
     var file = Request.Files[name];
         if (file.ContentLength > 0)
             pics.Add(file);        
 }
 input.Pictures = pics;
A: 

Check out this post Having troubles calling a Controller Post Method…

This might give you a clue as to how to fix your issue.

griegs
This is not giving a clue to the binding issue.
Mendy
A: 

Try to give your controls different names: Picture[1], Picture[2], .. , Picture[n]. Binder cannot decide that picture2 must be in Pictures collection.

Sorry, MVC doesn't have binder for collections of files. You can use FileCollectionModelBinder from MvcFutures project. All you have to do is to reference MVCFutures assembly and add additional model binder (in global.asax.cs or elsewhere):

FileCollectionModelBinder.RegisterBinder(ModelBinders.Binders); 
Gopher
sorry, i meant Pictures[n], not Picture[n]
Gopher
Still it is null.
Mendy
look my updated post
Gopher