0

リストデータを.xlsファイルとしてダウンロードする必要があります。私のコントローラーコードは次のとおりです。

     [HttpGet]
        public void AttendeeListToExport()
        {
            string campaign_id = string.Empty;
            campaign_id = ((MemberProfile)HttpContext.Current.Profile).HOWCampaignID;
            AutoCRM.Services.HOW.Attendee.Manage manage = new AutoCRM.Services.HOW.Attendee.Manage();
            DataSet lst = manage.AttendeeListToExport(campaign_id);
            if (lst != null)
            {
                if (lst.Tables[0].Rows.Count > 0)
                {
                    DataTable dt = lst.Tables[0];
                    // Export all the details to Excel
                    string filename = campaign_id + "_" + DateTime.Now.ToString("ddMMyyyy") + ".xls";
                    Export objExport = new Export();
                    objExport.ExportDetails(dt, Export.ExportFormat.Excel, filename);
                }
            }
        }

jsコード

$('#exportToExcel').on("click", function () {
        alert('hi');
        $.ajax({
            url: "/api/Attendee/AttendeeListToExport",
            async: true,
            cache: false,
            success: function (result) {
                alert(result);
            }
        });
    });

コードは正しく実行されていますが、ファイルがダウンロードされていません

4

3 に答える 3

2

次の両方の方法で、javascript を介してファイルをダウンロードできます。

HiddenIFrame の使用:

var downloadURL = function downloadURL(url) {
    var iframe;
    var hiddenIFrameID = 'hiddenDownloader';
    iframe = document.getElementById(hiddenIFrameID);
    if (iframe === null) {
        iframe = document.createElement('iframe');  
        iframe.id = hiddenIFrameID;
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
    }
    iframe.src = url;   
}

Jquery の使用:

$('a').click(function(e) {
    e.preventDefault();  //stop the browser from following
    window.location.href = 'uploads/file.doc';
});

<a href="no-script.html">Download now!</a>
于 2012-11-06T07:50:29.737 に答える
0

ajax を使用してファイルをダウンロードすることはできません。非表示の iframe を使用するか、ファイルに直接リンクする必要があります。

于 2012-11-06T07:32:31.193 に答える
0

コントローラ アクションが FileResult を返した場合、次のように JavaScript 関数からこれをダウンロードできます。

$('#exportToExcel').on("click", function () {
    window.open("/api/Attendee/AttendeeListToExport", "_blank");
});
于 2012-11-06T07:55:38.800 に答える