Javascript Excel文件通过POST下载C#(避免404.15查询字符串错误)

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文件代码片段。(使用敲除) 更改

我目前正在从事一个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("|") },