我正在尝试下载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调用,那就可以了!为什么呢?