Javascript:
function tableToExcel() {
var calendar = document.getElementById("calendar").innerHTML;
window.location.href = "/Calendar/ExportData?calendar=" + calendar;
}
控制器:
public ActionResult ExportData(string calendar)
{
string headerTable = calendar;
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + "Calendar" + ".xls;");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
Response.Write(headerTable);
Response.Flush();
Response.End();
return new EmptyResult();
}
如果我使用window.location.href将document.getElementById(" calendar")。innerHTML发送到ExportData,我看到下面的url异常
Request URL Too Long
HTTP Error 414. The request URL is too long.
我发送参数但浏览器获取参数为url为什么?我应该怎么做才能解决这个问题,谢谢?
答案 0 :(得分:1)
最大网址大小为 2,083 个字符。
如@Brian所述,HTTP客户端(例如浏览器)可能有 他们自己的限制,HTTP服务器将有不同的限制。 Microsoft支持称“最大URL长度为2,083个字符” Internet Explorer“.IE浏览器的URL存在问题。
你应该使用post方法,所以:
此代码创建一个表单并将其附加到正文并提交。
function tableToExcel() {
var calendar = document.getElementById("calendar").innerHTML;
var form = $('<form action="ExportData" method="post"><input type="text" name="calendar" /></form>')
form.find('input').val(calendar);
form.appendTo('body').submit();
}
我建议您在行动中添加[HttpPost]
属性。
[HttpPost]
public ActionResult ExportData(string calendar)