将多个文件绑定到具有属性的数组

Bind multiple files to array with properties

我有一个基本的 HTML 表格,里面有 <input type="file" multiple>。我为每个选择的文件创建一个描述。

现在我想将它们绑定到 PostedPhotoViewModel[] PostedPhotos;:

public abstract class PostedPhotoViewModel
{
    public string Description { get; set; }
    public HttpPostedFileBase File { get; set; }
}

我不知道如何准备我的输入来做这样的事情。可能吗?还是我必须做一些技巧才能实现我的目标?

@Html.TextBoxFor(m => m.PostedPhotos, new { @name = "PostedPhotos", type = "file", multiple="multiple" })

我试过用这种方式强制,但是没有用:

myForm.submit(function(e) {
    myInput.files = $.map(myInput.files, function(element) {
        return {File: element, Description: "Test description"}
    });
    return true;
});

这是基本的 ASP.NET MVC 5 项目。

我会替换这个:

@Html.TextBoxFor(m => m.PostedPhotos, new { @name = "PostedPhotos", type = "file", multiple="multiple" })

只有:

<input type="file" name="files" multiple="multiple" />

然后在控制器中执行如下操作:

[HttpPost]
public ActionResult Index(IEnumerable<HttpPostedFileBase> files)

我认为与文本框绑定的嵌套视图模型列表 属性 使它比实际复杂得多。