2

嗯,这很奇怪。我正在做我在网上大量找到的所有事情,但仍然无法正常工作。我想上传一个文件,所以在我放的视图中:

@using (Html.BeginForm("Import", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="uploadFile" />
<input type="submit" value="Importa" />
}

这是主页/导入:

[AcceptVerbs(HttpVerbs.Post)] // or [HttpPost], nothing changes
public ActionResult Import(HttpPostedFileBase uploadFile)
{
   Debug.WriteLine("Inside Import");
   if (uploadFile == null)
       Debug.WriteLine("null");
   // Verify that the user selected a file
   if (uploadFile != null && uploadFile.ContentLength > 0)
   {
      Debug.WriteLine("Valid File");
      ...
   }
}

它总是打印Inside Import + null。所以我确定我调用了正确的控制器操作,但它总是收到一个空的 HttpPostedFileBase。

有没有人对此有建议或已经发现(并解决了)这类问题?谢谢!

4

1 回答 1

13

发现了问题。您必须将 html 属性 "@data_ajax = "false" " 放在视图中,靠近 enctype 之一。因此,如果您使用的是 jQuery Mobile,请务必编写

@using (Html.BeginForm("Import", "Home", FormMethod.Post, new { enctype = "multipart/form-data", @data_ajax = "false" }))

希望这会对某人有所帮助!

于 2012-11-08T16:28:49.130 回答