5

次のコードでJSONオブジェクトを送信しています。コントローラーはCSV形式で値を返します。これは、CSVファイルとして開くか保存するためのpromtを提供する必要があります。成功するコードを正確に書くべきか理解できません:関数(結果)

エクスポート用のリンク

Html.ActionLink("Export", "", "", null, new { @onclick = "return exportData();"})

function exportData() {

var searchViewModel = getExLogSearchModelData();
var path = getAbsolutePath("ExclusionLog", "ExportData");
$.ajax({
    url: path,
    cache: false,
    contentType: 'application/json; charset=utf-8',
    dataType: 'html',
    type: 'POST',
    data: JSON.stringify(searchViewModel),
    success: function (result) {
    },
    error: function (error) {
        $("#voidcontainer").html("Error");
    }
});

}

コントローラーActionResult

    public ActionResult ExportData(ExclusionLogSearchViewModel postSearchViewModel)
    {
        try
        {
            IEnumerable<ExclusionLogViewModel> exclusionLogData = null;
            exclusionLogcData = this._workerService.GetExclusionLogData(postSearchViewModel);

            return CSVFile(exclusionLogMembershipSyncData.GetStream<ExclusionLogViewModel>(), "ExclusionLogTables.Csv");
        }
        catch (Exception ex)
        {
                throw ex;
        }
        return null;
    }

これを行う方法を提案できますか?

4

1 に答える 1

3

同じ問題が発生し、を使用してファイルをダウンロードする方法が見つかりませんでしたが、$.ajax同様の動作を提供する優れたJavaScriptライブラリを見つけました。

https://github.com/johnculviner/jquery.fileDownload

次のようなものを呼び出す必要があります。

$.fileDownload(path, {
    httpMethod: 'POST',
    data: JSON.stringify(searchViewModel),
    success: function (result) {
    },
    error: function (error) {
        $("#voidcontainer").html("Error");
    }
});

そして、コントローラーでCookieを作成することを忘れないでください。あなたのためにそれsrc/Commonを行う適切なアクションフィルターがあります。

于 2013-01-06T14:41:34.543 に答える