ASP.NET MVC3 RAZOR:文件上载给出文件计数为零

时间:2012-02-23 10:51:32

标签: asp.net .net asp.net-mvc razor

我需要使用带有RAZOR的MVC3将多个文件上传到Web服务器。我有以下代码。在控制器中,我的文件数为零。如何更正它以获取上传的文件的实际数量并获取内容?

public class MyFileController : Controller
{

    public ActionResult MyFileProcessActionTest()
    {
        return View();
    }

    [HttpPost]
    public ActionResult MyFileProcessActionTest(IEnumerable<System.Web.HttpPostedFileBase> files)
    {

        int fileCount = files.Count<System.Web.HttpPostedFileBase>();
        return RedirectToAction("Index");
    }
}

查看

@{
ViewBag.Title = "MyFileProcessActionTest";
}

<h2>MyFileProcessActionTest</h2>

@using (Html.BeginForm())
{

<input type="file" name="files" id="file1" />
<input type="file" name="files" id="file2" />

<input type="submit"  />

}

读:

  1. Binding HttpPostedFileBase using Ajax.BeginForm

  2. ASP.NET MVC上传和下载文件 http://www.mikesdotnetting.com/Article/125/ASP.NET-MVC-Uploading-and-Downloading-Files

  3. How do I Validate the File Type of a File Upload?

  4. MVC 3 file upload and model binding

2 个答案:

答案 0 :(得分:8)

您必须在enctype标记中加入form属性,以表明该表单应包含文件。

@using (Html.BeginForm("YourAction", "Controller", FormMethod.Post, new {enctype="multipart/form-data"))
{
}

答案 1 :(得分:5)

更改您的表单以符合以下

@using(Html.BeginForm("action","controller",FormMethod.Post,new{encType = "multipart/form-data"})){
{

<input type="file" name="files[0]" id="file1" />
<input type="file" name="files[1]" id="file2" />
<input type="file" name="files[2]" id="file3" />

<input type="submit"  />

}

索引0,1,2将允许modelbinder绑定到IEnumerable此外,在将文件发布到服务器时也必须指定encType