0

私は2つのことに問題があります最初:私はこの関数がバインドされたa hrefを持っています

$('#tblReports tbody').on('click', '.btnViewReportExcel', function (e) { 
            $.ajax({
                url: urlExcel,
                type: 'POST',
                data: {
                    initDate: initDate,
                    finalDate: finalDate
                }
            });
        });

そしてコントローラーにはこれがあります:

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult ComissionReport(DateTime initDate, DateTime finalDate)
        {
            var result = things to do;
            return View(result);
        }

私の問題は、a href がロードされた html を返さないことです。このデータがロードされたページのリロードを返すにはどうすればよいですか?

そして2番目の問題は次のとおりです。a hrefによっても呼び出されるこの関数があります。

        [HttpPost]
        public ActionResult GenerateExcel(DateTime initDate, DateTime finalDate)
        {

                MemoryStream ms = data Generated by function

                if (ms != null)
                {
                    ms.Seek(0, SeekOrigin.Begin);
                    return File(ms, @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", "Test.xlsx");
                }
            return new EmptyResult();
        }

しかし、問題は上記と同じで、投稿はExcelをテキストで返し、ダウンロードしたファイルを返したい

誰でもこの問題の解決策を持っていますか? 助けてくれてありがとう、そして私の悪い英語でごめんなさい

4

1 に答える 1

0

>> 最初: この関数がバインドされた a href があります

なぜ ajax 呼び出しなのか? レンダリングされた HTML は jqXHR として返され、この結果を次のように取得できます。

var result = $.ajax(url: urlExcel ...

しかし、それはあなたが得ること以外にはないと思います。リダイレクトするには、次のようにするだけです。

window.location = urlExcel + "/" + ここにパラメーター

または AJAX 経由で HTML コンテンツを取得する

$.get(urlExcel, { param1: "value", ... } function(data) { alert(data); });

>> 2 つ目の問題: a href によっても呼び出されるこの関数があります

「添付ファイル」のような Content-Disposition ヘッダーを指定する必要があります。filename="your file name"' を使用して、プレビューなどを行わずにファイルをダウンロードし、Content-Type ヘッダー値に「application/octet-stream」を使用できます。

Response.Headers.Add("Content-Disposition", "attachment ...));

return File(ms, ...
于 2013-09-12T14:13:36.310 に答える