为什么上传多个文件时HttpPostedFileBase列表为空?

时间:2017-10-28 10:36:15

标签: javascript c# asp.net-mvc

在客户端,我有以下代码:

<form action="@Url.Action("UploadStatistics")" method="POST" enctype="multipart/form-data">
<h4>Upload Statistics Excel file(s)</h4>
<p>
    <input type="file" name="file" id="file" multiple/>
</p>

<input type="submit" onclick="ClearDirtyFlag();" />

因此用户可以选择要上传的多个文件。

在服务器端,我有这个代码:

public ViewResult UploadStatistics(List<HttpPostedFileBase> files)
{
    //the issue is that the files parameter comes null...
}

注意:如果我不期望 HttpPostedFileBase 对象列表(但只是 HttpPostedFileBase 参数),则代码工作得很好......

有谁能告诉我这里有什么问题?

最好的问候。

1 个答案:

答案 0 :(得分:3)

您的输入有name="file",但POST方法中的参数名为files - 它们不匹配。将输入更改为

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

或更好,具有属性的视图模型

public IEnumerable<HttpPostedFileBase> Files { get; set; }

并使用

强烈绑定到您的模型
@Html.TextBoxFor(m => m.Files, new { type = "file" })

为您提供了能够应用验证属性并获得客户端和服务器端验证的额外好处