Q:

Bind multiple files to array with properties

I have a basic HTML form with <input type="file" multiple> inside.  For each chosen file I create a description. 
Now I want to bind them to PostedPhotoViewModel[] PostedPhotos;:
public abstract class PostedPhotoViewModel
{
    public string Description { get; set; }
    public HttpPostedFileBase File { get; set; }
}

I don't know how to prepare my input to do such a thing.  Is it possible?  Or do I have to do some tricks to achieve my target? 
@Html. TextBoxFor(m => m.PostedPhotos, new { @name = "PostedPhotos", type = "file", multiple="multiple" })

I tried to force it in such a way, but didn't work:
myForm.submit(function(e) {
    myInput.files = $.map(myInput.files, function(element) {
        return {File: element, Description: "Test description"}
    });
    return true;
});

It's basic ASP.NET MVC 5 project. 

A:

I would replace this:
@Html. TextBoxFor(m => m.PostedPhotos, new { @name = "PostedPhotos", type = "file", multiple="multiple" })

With just:
<input type="file" name="files" multiple="multiple" />

Then in the controller do something like:
[HttpPost]
public ActionResult Index(IEnumerable<HttpPostedFileBase> files)

I think the nested view model list binding with a textbox property is making it far more complicated than it is.