HttpPostedFileBase在提交后返回null

时间:2013-07-24 10:03:22

标签: c# asp.net-mvc

当我尝试上传文件时,我继续使用HttpPosterFileBase获取null:

我的观点中有这个代码:

@using (Html.BeginForm("Import", "Control", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="file" name="fileUpload"/>
    <input type="submit" value="Import" id="btnImport" class="button" />
}

这个代码与我的控制器:

[HttpPost]
public ActionResult Import()
{    
     HttpPostedFileBase file = Request.Files[fileUpload];            
     Other codes...
}

我也在我的控制器中试过这个:

[HttpPost]
public ActionResult Import(HttpPostedFileBase fileUpload)
{        
    Other codes...
}

按下提交按钮后,“文件”的值为null。

4 个答案:

答案 0 :(得分:1)

默认模型绑定器按文件名称绑定。您的输入名称为fileUpload ..您的参数名称为file。使它们一样可行。

答案 1 :(得分:0)

你没有正确地进行绑定,请更改:

[HttpPost]
public ActionResult Import(HttpPostedFileBase file)
{        
    // other stuff
}

要:

[HttpPost]
public ActionResult Import(HttpPostedFileBase fileUpload)
{        
    // other stuff
}

答案 2 :(得分:0)

你的名字无法匹配,因为下面的代码对我有用,除非你使用某种jQuery或Ajax阻止它工作你应该是好的。它是文件上传输入的名称和必须匹配的HttpPostedFileBase名称。

@using (Html.BeginForm("import", "control", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="file" name="fileupload" />
    <input type="submit" value="Import" id="btnImport" class="button" />
}



[HttpPost]
public ActionResult Import(HttpPostedFileBase fileupload)
{
      return View();
}

答案 3 :(得分:0)

感谢大家的回答。我相信所有这些答案都是正确的但我能够在注意到我已经嵌套了带有页面的表单后解决了这个问题。在阅读答案后找到解决方案:MVC. HttpPostedFileBase is always null

再次,谢谢!干杯! :)