0

ASP.NET MVC アプリケーションでファイルをアップロードしています。.ascx ファイルには、次のものがあります。

<form action="/Admin/Mail/ABC" enctype="multipart/form-data"  method="post">
<div>               
    <input type="file" name="file" id="file" />
    <input type="submit" value="Upload" id="UploadList" onclick="Origin.UploadOptOutList();"/>
</div>

.js ファイル内:

Origin.UploadList = function () {
    Origin.ajax({
        url: '/Admin/Mail/Upload',
        type: 'POST',
        dataType: 'json',
        success: function (data) {
            alert('success!');
        }
    });               
}

そしてコントローラー:

[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
    List<string> validIDs, invalidIDs;
    if (file.ContentLength > 0)
    {
        // do something
    }
}

.js からアクションを呼び出す場合、「ファイル」は常に NULL です。私が見逃しているものはありますか?

4

2 に答える 2

2

最初は、HTML5 を使用していない限り、ファイルを非同期でアップロードすることはできません。この機能がまだ必要な場合は、jQuery Form pluginを試してください。

次に、現在の js では、リクエスト (メソッド オプションのフィールド)dataでデータを送信しajaxていないため、サーバー側で何も受信していません。さらに、前に述べたように、このリクエストにファイルを挿入することはできません。ここでの最も簡単な解決策は、AJAX をあきらめて、通常の方法でファイルをアップロードすることです。

意見:

<form action="/Admin/Mail/Upload" enctype="multipart/form-data"  method="post">
    <div>               
        <input type="file" name="file" id="file" />
        <input type="submit" value="Upload" id="UploadList" />
    </div>
</form>

ここには js はありません。サーバー コードは同じです。

于 2012-04-06T19:08:40.963 に答える
1

これはあなたが必要とするものです

ScriptManager sm = ScriptManager.GetCurrent(Page);
            sm.RegisterPostBackControl(btnEditSubmit);
            Page.Form.Attributes.Add("enctype", "multipart/form-data");
            Page.Form.Attributes.Add("method", "post");
于 2012-11-05T21:43:14.940 に答える