0

我在两件事上遇到了麻烦首先:我有一个绑定了这个函数的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,在帖子中返回文本我如何返回加载此数据的页面的重新加载?

第二个问题是:我有这个函数,也被 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();
        }

但是问题和上面一样,post返回的是文本的excel,我想返回下载文件

有人有解决这个问题的方法吗?谢谢你的帮助,对不起我的英语不好

4

1 回答 1

0

>> 首先:我有一个绑定了这个函数的href

为什么要调用ajax?渲染的 HTML 返回为 jqXHR,您可以通过这种方式获得此结果,

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

但我认为它不是你除了得到。你应该简单地这样做来重定向:

window.location = urlExcel + "/" + 你在这里的参数

或通过 AJAX 获取 HTML 内容

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

>> 第二个问题是:我有这个函数,也被 a href 调用

您应该指定 Content-Disposition 标头,例如 'attachment; filename="your file name"'下载文件,无需预览或其他任何内容,您可以使用“application/octet-stream”作为 Content-Type 标头值。

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

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