MVC:文件未下载

时间:2016-07-06 08:48:39

标签: c# asp.net asp.net-mvc-4

我正在尝试下载excel文件,但没有任何反应。

StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            grid.RenderControl(htw);
            HttpContext.Response.AddHeader("content-disposition", "attachment; filename=Daily_Report_" + DateTime.Now.Day.ToString() + "_" + DateTime.Now.Month.ToString() + "_" + DateTime.Now.Year.ToString() + "_" + DateTime.Now.Hour.ToString() + "" + DateTime.Now.Minute.ToString() + ".xls");
            this.Response.ContentType = "application/vnd.ms-excel";
            byte[] temp = System.Text.Encoding.UTF8.GetBytes(htw.InnerWriter.ToString().Replace("<div>", "").Replace("</div>", ""));
            grid.Dispose();
            htw.Dispose();
            return File(temp, "application/vnd.ms-excel");

类似的代码在另一个页面中正常工作。 (我是mvc的新手所以请耐心等待。)

我也试过这些:

 return File("test.xls", System.Net.Mime.MediaTypeNames.Application.Octet, Path.GetFileName("test.xls"));



return File(temp, System.Net.Mime.MediaTypeNames.Application.Octet, "Test.xls");
            //return File(temp, "application/vnd.ms-excel");

CSHTML

   //window.location.href = "/MeterLog/Export";  // this works but i want the below approach to work: 

            var fltrFromDate = $("#FromDate").val();
            var fltrToDate = $("#ToDate").val();
            var type = $('input:radio[name=Status]:checked').val()
            box = new ajaxLoader(this, { classOveride: 'blue-loader', bgColor: '#000' });
            var dataJSON = { "fltrFromDate": fltrFromDate, "fltrToDate": fltrToDate, "onoff": type };
            var str = "";
            box = new ajaxLoader(this, { classOveride: 'blue-loader', bgColor: '#000' });
            $.ajax({
                url: '@Url.Action("Export", "MeterLog")',
                type: 'GET',
                dataType: 'html',
                contentType: 'application/json; charset=utf-8',
                data: { "fltrFromDate": fltrFromDate, "fltrToDate": fltrToDate, "onoff": type }
            })

注意:我刚刚发现,如果我对控制器中的参数进行硬编码并用window.location.href = "/MeterLog/Export";替换ajax调用,那就可以了!为什么呢?

0 个答案:

没有答案