2

私はすでに mvc3 で通常どおりファイルを送信していました。今度は Ajax で同じことを行う必要があります。そのため、この jquery プラグインを使用しました :

コードを表示:

$(document).ready(function () {
        var options = {
            url: "/Home/TakeFile",
            dataType: "json",
            success: showResponse
        };


        $("#File").submit(function () {
            alert("submit");
            $(this).ajaxSubmit(options);
            return false;
        });
    });


    function showResponse(responseText, statusText, xhr, $form) {
        alert("showResponse");
        alert(responseText.fileName);
    }
</script>

@using (Html.BeginForm("TakeFile", "Home", FormMethod.Post, new { @id = "File", enctype = "multipart/form-data" }))
{
    <input type="file" id="file" />
    <input type="submit" value="Click to submit" id="button" />
}

コントローラーコード:

[HttpPost]
        public ActionResult TakeFile(HttpPostedFileBase file)
        {
            return Json(new { fileName=file.FileName});
        }

「TakeFile」メソッドのファイル パラメータは常に null です。機能していないようです。また、「Ajax.BeginForm()」ヘルパーを使用して実行できますか??

4

4 に答える 4

1

私の知る限り、ajax経由でファイルをアップロードすることは許可されていません...ファイルを投稿するには、完全なポストバックが必要です。

それを実現するには、フラッシュ ソリューションまたはそのようなものが必要です。たとえば、 UPLOADIFYを使用してください...

機能させるには、このブログ投稿を参照してください

于 2012-04-16T15:52:29.913 に答える
1

a 内の html 要素のname属性は、フォームが送信された後にフォーム データを参照するために使用されます。<input><form>

注: name 属性を持つフォーム要素のみが、フォームの送信時に渡される値を持ちます。

アクション メソッド public ActionResult TakeFile(HttpPostedFileBase file){..}には「ファイル」というパラメータ名があるため、ビューでは、ファイル入力要素にname='file'属性が必要です。更新されたコード:

@using (Html.BeginForm("TakeFile", "Home", FormMethod.Post, new { @id = "File", enctype = "multipart/form-data" }))
{
    <input type="file" id="file" name="file" />
    <input type="submit" value="Click to submit" id="button" />
}
于 2012-04-16T19:15:14.367 に答える
0

以下を使用してみてください

<input type="file" id="file" name = "attachment"/>

コントローラー内に次のコードを追加して、ファイルオブジェクトを取得します

var file = Request.Files["attachment"];
于 2012-04-16T12:35:47.693 に答える
0

ファイルをアップロードするときにオプションのdataType:jsonが奇妙に思えますが、削除してみましたか?

またName、入力タイプの属性を使用してみてください

<input type="file" id="file" name="file" />
于 2012-04-16T15:01:36.630 に答える