Javascript Excel文件通过POST下载C#(避免404.15查询字符串错误)
我目前正在从事一个MVC项目。我有一个按钮,可以生成excel格式的报告 我已经讨论了许多其他用户之前提出的几个问题 有没有办法通过POST传递查询字符串以避免查询长度 这是我在数据库错误日志中看到的 找不到用户404.15“/GD15/Batching/PaymentReport? 检查ID=67284%7C66283%7C66288% 我通过javascript将大约200个checkId传递给控制器以生成excel文件。 感谢您的帮助 #Javascript文件代码片段。(使用敲除) 更改:Javascript Excel文件通过POST下载C#(避免404.15查询字符串错误),javascript,c#,ajax,asp.net-mvc,knockout.js,Javascript,C#,Ajax,Asp.net Mvc,Knockout.js,我目前正在从事一个MVC项目。我有一个按钮,可以生成excel格式的报告 我已经讨论了许多其他用户之前提出的几个问题 有没有办法通过POST传递查询字符串以避免查询长度 这是我在数据库错误日志中看到的 找不到用户404.15“/GD15/Batching/PaymentReport? 检查ID=67284%7C66283%7C66288% 我通过javascript将大约200个checkId传递给控制器以生成excel文件。 感谢您的帮助 #Javascript文件代码片段。(使用敲除) 更改
$.fileDownload(gControllerName + "/PaymentReport", {
data: { checkIds: checkIds.join("|") },
致:
为了确保数据通过
POST
而不是GET
发送,如果您要使用POST,可能更容易将数据放在请求正文中。@Stefan:对于上面的JS,我该如何做。我不知道我在这里是否做错了什么。我需要一个表单标签(必要吗?)要使用POST?请不要忘记将[HttpGet]
属性更改为[HttpPost]
@JohnPavek:感谢您的更新,我们已将[HttpPost]添加到控制器:)mjwills:这些解决方案非常有效,谢谢:)
public ActionResult PaymentReport(string checkIds)
{
Report report = new Report
{
ReportDataProvider =
"BKO.App.Reporting.ReportDataProviders.PaymentDataProvider",
ReportFileFullName = "Payment.rdlc"
};
string mimeType;
byte[] excelData = ReportGenerator.GetReportData(ReportFormatEnum.EXCEL,
report, "CheckNumberList=" + checkIds, out mimeType);
Response.AppendCookie(new System.Web.HttpCookie("fileDownload", "true"));
return File(excelData,"application/vnd.ms-excel","PaymentReport_"+".xls");
}
$.fileDownload(gControllerName + "/PaymentReport", {
data: { checkIds: checkIds.join("|") },
$.fileDownload(gControllerName + "/PaymentReport", {
httpMethod: 'POST',
data: { checkIds: checkIds.join("|") },