将呈现的报告从控制器发送到视图
本文关键字:视图 控制器 报告 | 更新日期: 2023-09-27 18:21:23
所以我对此进行了一些研究,据我所知,过去用于这方面的技术已经被逐步淘汰。
我有一个RDLC文件。我正在尝试使用LocalReport类,但该视图似乎非常不喜欢接收呈现的报告。我正在使用MVC5。
有人能推荐一些我可以考虑的替代使用LocalReport类或RDLC文件的方法吗。或者有人能提供一些关于如何正确做到这一点的见解吗。
如果你想看看我正在使用的一些代码,请告诉我。
感谢:)
好吧,我设法解决了我的问题,如下所示:
我创建了报告并将其保存到一个临时文件夹中,该文件夹每天都会被删除。
System.IO.File.WriteAllBytes(Server.MapPath("/TempReports/report.pdf"), renderedBytes);
我的控制器操作刚刚返回了一个指向渲染报告的链接。
JavaScript:
function GenerateReport() {
$.ajax({
type: "POST",
url: "/Reporting/ReportAction",
data: { param1: "", param2: "" },
success: function (data) {
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv':11'./)) {
//set of functions specific to IE
var success = new PDFObject({ url: data }).embed("reportGenIe");
$("#reportGenIe").attr('hidden', false);
}
else {
//Normal browsers
var success = new PDFObject({ url: data }).embed("reportGen");
}
},
error: function () {
alert("Unable to generate the report.");
}
});
对于IE,我使用Iframe,对于其他浏览器,我使用Object
<div role="content" style="padding-bottom:20px; height:650px !important">
<iframe id="reportGenIe" hidden="hidden"></iframe>
<object id="reportGen"></object>
</div>
这包括绕过IE拒绝为我动态显示pdf。
我使用了PDFObject-js库,它似乎已经完成了任务。http://pdfobject.com/