asp.net-mvc - 表单 enctype ="multipart/form-data"不工作

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

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

有效的原始来源是:

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

和来自 Controller 的 Action 代码:

    [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 调用没有问题。

最佳答案

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

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

关于asp.net-mvc - 表单 enctype ="multipart/form-data"不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18351101/

相关文章:

asp.net - Url.Action 不使用所需的输出路径

javascript - 从 DropDown 中选择选项并在另一个文本字段中自动设置值 ASP .NET MVC

c# - 使用 GetProperty 语法在 Umbraco 7 中获取媒体 url

asp.net-mvc - 我想要最后 4 条记录,但总是得到前 4 条记录

asp.net-mvc-3 - 使用自定义应用程序池标识拒绝目录列表

c# - 审核/登录 ASP.NET MVC3

asp.net - 在 ASP.NET MVC 中提供 favicon.ico

c# - Thread.CurrentPrincipal 错误地声称是匿名的

c# - 啊!为什么 System.Web.Mvc.HandleErrorInfo 会传递到我的 View ?

c# - 如果 .Count == 0 条件运算符不显示