6

HttpPostedFileBase のデフォルトのバインダーを使用して、モデルとファイルのアップロードをバインドするフォームがあります。

これは、Html.BeginForm() を使用する場合にうまく機能します。ただし、AJAX を使用して同じアクションを実行したかったので、これを Ajax.BeginForm() に置き換え、それに応じてパラメーターを変更しました。

モデルは引き続き正しくバインドされますが、ファイルのアップロードを HttpPostedFileBase にバインドできません。

これにより、モデルとファイルのアップロードがバインドされます。

<% using (Html.BeginForm("MapUpdateColumns", "RepositoryAdmin", FormMethod.Post, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>

これはモデルのみをバインドします:

<% using (Ajax.BeginForm("MapUpdateColumns", "RepositoryAdmin", new AjaxOptions { UpdateTargetId = "columnMappings" }, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>

コントローラーのアクション:

public ActionResult MapUpdateColumns(DatasetViewModel model, HttpPostedFileBase sourceFile)

これは可能である必要がありますか?もしそうなら、私は何が間違っていますか? ありがとう。

4

4 に答える 4

10

AJAX でファイルをアップロードすることはできません。これを実現する 1 つの方法は、AJAX 呼び出しをシミュレートし、実際のファイル アップロードを実行するか、Flash を使用する非表示の iframe を使用することです。これは、ファイル フィールドを含むフォーム送信を透過的に ajax 化できる非表示の iframe を使用する、非常に優れたjQuery フォームプラグインです。

于 2010-03-22T11:10:25.067 に答える
2

可能です、答えはここにあります:

https://stackoverflow.com/a/13522052/1067149

私はそれを自分でやった、そしてそれがうまくいくことが保証されている。

于 2012-11-23T01:21:54.073 に答える