1

当我尝试上传文件时,我一直使用 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...
}

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

4

4 回答 4

1

默认模型绑定器按名称绑定文件。您的输入名称是fileUpload.. 您的参数名称是file. 使它们相同将起作用。

于 2013-07-24T10:13:28.147 回答
0

You're not doing your binding correctly, change this:

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

To:

[HttpPost]
public ActionResult Import(HttpPostedFileBase fileUpload)
{        
    // other stuff
}
于 2013-07-24T10:15:22.683 回答
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();
}
于 2013-07-24T16:21:49.963 回答
0

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

再次,谢谢!干杯! :)

于 2013-07-25T11:49:24.787 回答