使用属性将多个文件绑定到数组

时间:2015-08-13 11:45:47

标签: javascript c# html asp.net-mvc model-binding

我有一个基本的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项目。

1 个答案:

答案 0 :(得分:1)

我会替换它:

@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)

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