【问题标题】:ASP.NET MVC Razor - Uploading File, HttpPostedFileBase always nullASP.NET MVC Razor - 上传文件,HttpPostedFileBase 始终为空
【发布时间】:2012-11-08 15:33:14
【问题描述】:

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

@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。

是否有人对此提出建议或已经发现(并解决了)此类问题? 谢谢!

【问题讨论】:

  • 您是否尝试过仅使用 HTML 表单标签而不是 Razor 助手?
  • 我做了数十亿的事情试图弄明白,所以我记不太清楚了……但我想我试过了!而且没有结果。不过,我会再试一次。所以,请继续关注,你会收到我的消息,谢谢!
  • 好的,使用 HTML 表单标签也不起作用。所以我想我以前也试过这个;)真的不明白为什么它对我不起作用,而其他人都这样做。
  • 您是否使用过网络调试工具(FireBug/Chrome Developer/Fiddler)来检查发布数据的内容?您应该能够看到名称为“uploadFile”的请求负载
  • ps 我测试了你的代码,它在 Chrome 中发布了数据,uploadFile 不为空

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


【解决方案1】:

发现问题。您必须将 html 属性 "@data_ajax = "false" " 放在视图中,靠近 enctype 之一。 所以,如果你使用的是 jQuery Mobile,一定要写

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

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

【讨论】:

  • 您应该在问题中指定您使用的是 jquery mobile。顺便说一句,我在您的问题中添加了标签。
  • 不能解决我的问题...当我从页面中删除 JQuery 库时它工作正常...有什么建议吗?
猜你喜欢
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多