【问题标题】:Form enctype="multipart/form-data" NOT WORKING表格 enctype="multipart/form-data" 不工作
【发布时间】:2014-11-14 08:51:08
【问题描述】:

我已经完成了使用表单将照片上传到 MVC(照片作为参数发送到 AJAX CALL)控制器的测试,现在需要做同样的事情,但需要修改:

有效的原始来源是:

<form action="/Home/Upload"  method="post" enctype="multipart/form-data">

<label for="photo">Photo:</label>
<input type="file" name="photo" id="photo" />

<input id="uploadbtn" type="submit" value="Upload" />
</form>

以及来自控制器的操作代码:

    [HttpPost]
    public ActionResult Upload(HttpPostedFileBase photo)
    {
        // Verify that the user selected a file
        if (photo != null && photo.ContentLength > 0)
        {
            // extract only the fielname
            var fileName = Path.GetFileName(photo.FileName);
            // store the file inside ~/App_Data/uploads folder
            var path = Path.Combine(Server.MapPath("~/C:/poze"), fileName);
            photo.SaveAs(path);

        }
        return Json(new { Success = true });
    }

这可行,但在这种情况下不起作用:

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

  <div class="control-group">
    <label class="control-label" for="photo">Photo:</label>
    <div class="controls">
        <input type="file" name="photo" id="photo" />
    </div>
  </div>
}

动作代码是:

public ActionResult EditModule(INT ID, string Description, HttpPostedFileBase photo)
{
    if (photo != null && photo.ContentLength > 0)
    {
        // extract only the fielname
        var fileName = Name + ".png";
        // store the file inside ~/App_Data/uploads folder
        var path = Path.Combine(Server.MapPath("~/Content/Module Previews"), fileName);
        photo.SaveAs(path);
    }

    else
    {
        Status += "Error image";
        Success = false;
    }
}

当我调试 EditModule 时,照片的值为 NULL。 我确定javascript和ajax调用没有问题。

【问题讨论】:

  • 什么javascript and ajax call

标签: asp.net-mvc asp.net-mvc-3 razor


【解决方案1】:

您已将控制器和操作名称设置为 null,因此表单不知道要发布到哪里。将前 2 个参数更改为动作名称和控制器名称:

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

【讨论】:

  • 为我工作(但我不想做 ajax。)
【解决方案2】:

当我调试 EditModule 时,照片的值为 NULL。我确定javascript和ajax调用没有问题

您不能使用 ajax 上传二进制文件。您必须使用&lt;IFRAME&gt; 或 Flash 插件。

有关更多信息,请参阅此答案:https://stackoverflow.com/a/6462673/70386

【讨论】:

    【解决方案3】:

    当你将 null 放入 action 和 controller 时,MVC 使用当前的 action 和控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-25
      • 2017-12-17
      • 1970-01-01
      • 2016-04-02
      相关资源
      最近更新 更多