MVC 4 Html.BeginForm()不会上传多个文件

时间:2014-07-06 01:15:00

标签: asp.net-mvc-4

我正在尝试从MVC 4中的表单上传两个图像。我看到了这个article,它的工作方式很好,就像Haaked做的那样,但当我试图通过{{1}做同样的事情时它不起作用

我有来自控制器的Action方法,适用于两种情况:

@using(Html.BeginForm())

问题来自于观点。以下是来自Haaked网站的代码,该视图适用于:

[HttpPost]
    public ActionResult Photo(IEnumerable<HttpPostedFileBase> files)
    {
        foreach (var file in files)
        {
            if (file != null && file.ContentLength > 0)
            {
                var fileName = Path.GetFileName(file.FileName);
                var path = Path.Combine(Server.MapPath("~/Content/Photos/"), fileName);
                file.SaveAs(path);
            }
        }
        return RedirectToAction("Photo");
    }

这是我的代码,不行。

<form action="" method="post" enctype="multipart/form-data">

    <label for="file1">Filename:</label>
    <input type="file" name="files" id="file1" />

    <label for="file2">Filename:</label>
    <input type="file" name="files" id="file2" />

    <input type="submit" />
</form>

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要在 Html.BeginForm 的方法重载中指定 enctype 才能上传文件。

@using (Html.BeginForm("YourAction", "YourController", FormMethod.Post,
    new { enctype = "multipart/form-data" }))
{
    <label for="file1">Filename:</label>
    <input type="file" name="files" id="file1" />

    <label for="file2">Filename:</label>
    <input type="file" name="files" id="file2" />

    <input type="submit" />
}