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 に答える