【发布时间】: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