0

我有以下代码:

<div>
  <input type="file" name ="file" onchange="location.href='<%: Url.Action("ChangeImage", new{Id = Model.Id}) %>'" />
</div>

在控制器中我有 ChangeImage 方法:

  public ActionResult ChangeImage(FormCollection collection, int Id,Products products)
    {
        var file = Request.Files["file"];

        //Do something
    }

但所选文件不会发布到控制器。问题是什么?如何将文件内容发送到控制器以使用它?

4

1 回答 1

1

因为您没有发布表单数据可能是原因。

在创建用于提交文件的 MVC 表单时,您必须指定“enctype”,使用助手您可以这样做:

@using (Html.BeginForm("MyAction", "MyController", new { @Id = Model.Id }, FormMethod.Post, new { name = "Form", enctype = "multipart/form-data" }))
{
    //all form fields code in here
}

然后你会想要改变你的 javascript 来发布表单,比如:

document.forms[0].submit();//assuming you only have one form

此外,您的操作参数似乎与任何内容都不匹配。具体ShopIDproducts。您可能会收到错误消息,因为您没有它们的默认值。不过,我不是 100% 确定那部分。或者也许你在表格的其他部分有,所以可能没问题

于 2012-11-27T18:01:29.093 回答