ASP.NET MVC Razor - 上传文件,HttpPostedFileBase始终为null

时间:2012-11-08 15:33:14

标签: asp.net-mvc jquery-mobile razor httppostedfilebase enctype

嗯,这很奇怪。 我正在做我在网上大量发现的一切,但仍然无效。 我想上传一个文件,所以在View I put:

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

这是Home / Import:

[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 。所以我确定我调用了正确的Controller Action,但它总是收到一个null HttpPostedFileBase。

有没有人有建议或者已经找到(并解决了)这类问题? 谢谢!

1 个答案:

答案 0 :(得分:13)

发现问题。你必须在视图中放置html属性“@data_ajax =”false“”,在enctype 1附近。 所以,如果您使用的是jQuery Mobile,请务必编写

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

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