File upload IEnumerable<;HttpPostedFileBase>;习惯于模型绑定

File upload IEnumerable<;HttpPostedFileBase>;习惯于模型绑定,file-upload,asp.net-mvc-4,model-binding,File Upload,Asp.net Mvc 4,Model Binding,我正在使用MVC4并尝试提交多个文件作为模型的一部分 我的表格是这样的 <% using (Html.BeginForm("Edit", "Issue",FormMethod.Post, new {id = "issueForm", encType="multipart/form-data"})) %> 视图模型上有一个属性 public IEnumerable<HttpPostedFileBase> Files { get; set; } public IEnum

我正在使用MVC4并尝试提交多个文件作为模型的一部分

我的表格是这样的

 <% using (Html.BeginForm("Edit", "Issue",FormMethod.Post, new {id = "issueForm", encType="multipart/form-data"})) %>
视图模型上有一个属性

public IEnumerable<HttpPostedFileBase> Files { get; set; }
public IEnumerable文件{get;set;}
该表单包含以下文件的输入:

<input id="filesX" type="file" name="Files">

其中X是通过javascript添加的文件框数量的递增数

我使用了fiddler和firebug,我可以明确地看到请求中正在发送文件,这也可以通过查看服务器上的request.files[0](发送1个文件时)来确认,因为它显示了内容和文件名

当我查看“文件”属性时,它看起来如下所示:

因此,似乎出于某种原因,文件集合中填充了null对象,而不是实际的文件数据,这很奇怪。我认为,如果模型绑定不起作用,那么整个Files集合将是null,而不是其中的第一项

你知道这是怎么回事吗

编辑: 我还尝试将文件作为action方法中的一个参数(实际上是以这种方式开始的),尝试更改文件输入名称的大小写,这两种方法都没有效果

编辑2: 在IE中提交似乎很好,但在firefox或chrome中则不然

编辑3: 似乎在FireFox/Chome中,X-request-With头是通过“XMLHttpRequest”发送的。我怀疑我们正在使用的ajaxform插件有什么奇怪的地方,它没有创建iframe来正确提交

编辑4:
我已经在一个单独的项目中复制了大部分代码,所有的代码似乎都能正常工作,不知道为什么在这个场景中它不能正常工作,一定是发生了一些奇怪的事情。我能找到的唯一一件事是,任何不支持xmlhttprequest级别2的浏览器似乎都会导致文件被正确绑定。

请将您的整个视图添加到您的问题中。请查看此博客文章。这可能会有帮助是的,我已经遵循了所有这些建议。您可以检查web.config文件中的最大文件长度并将“?”更改为您想要的文件大小吗?您的最大文件不能异步发布,请禁用ajaxform插件,然后重试
public IEnumerable<HttpPostedFileBase> Files { get; set; }
<input id="filesX" type="file" name="Files">