【问题标题】:Excel File Download C# via POST(to avoid 404.15 query string error)Excel 文件通过 POST 下载 C#(避免 404.15 查询字符串错误)
【发布时间】:2017-12-23 08:54:30
【问题描述】:

我目前正在从事一个 MVC 项目。我有一个按钮,可以生成 excel 格式的报告。

我已经解决了许多其他用户之前提出的几个问题。

有没有办法通过 POST 传递查询字符串以避免查询长度。

这是我在数据库错误日志中看到的。

NO USER 404.15 Not Found "/GD15/Batching/PaymentReport? checkIds=67284%7C66283%7C66288%........

我通过 javascript 将大约 200 个 checkId 传递给控制器​​以生成 excel 文件。 任何帮助表示赞赏。

#Javascript文件代码sn-p.(使用敲除)

       self.onClickDownload = function () {
       if (!self.actionsEnabled()){
  return;
}

var selectedRows = self.paymentGrid.selectedRows();
var checkIds = [];
for (var i = 0; i < selectedRows.length; i++) {
  checkIds[i] = selectedRows[i].Id;
}

self.isDownloading(true);

$.fileDownload(gControllerName + "/PaymentReport", {
  data: { checkIds: checkIds.join("|") },
  successCallback: self.onDownloadComplete,
  failCallback: self.onDownloadFailed
});

}

控制器(代码 sn-p)

  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");
}

【问题讨论】:

  • 如果您要使用帖子,也许将数据放在请求正文中会更容易。
  • @Stefan:关于上述 JS,我该怎么做。我不知道我在这里做错了什么。我需要一个表单标签(必要吗?)才能使用 POST?

标签: javascript c# ajax asp.net-mvc knockout.js


【解决方案1】:

变化:

$.fileDownload(gControllerName + "/PaymentReport", {
  data: { checkIds: checkIds.join("|") },

到:

$.fileDownload(gControllerName + "/PaymentReport", {
  httpMethod: 'POST',
  data: { checkIds: checkIds.join("|") },

确保数据通过POST而不是GET发送。

【讨论】:

  • 不要忘记将[HttpGet] 属性更改(如果适用)为[HttpPost]
  • @JohnPavek : 感谢更新已将 [HttpPost] 添加到控制器 :)
  • mjwills:这个解决方案很有魅力,谢谢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
  • 2019-01-05
  • 1970-01-01
  • 2011-07-09
  • 2015-04-12
  • 1970-01-01
相关资源
最近更新 更多