我知道在ASP.NET MVC中使用服务器端控件是禁忌,但我们有一长串的水晶报告,该公司已经为之前的应用程序生成了我想要用于新ASP的水晶报告. NET MVC应用程序.
是否有适当的方法在ASP.NET MVC中使用水晶报表?如果是这样,怎么样?
实际上很简单.只需添加以下对MVC项目的引用:
CrystalDecisions.CrystalReports.Engine
CrystalDecisions.ReportSource
CrystalDecisions.Shared
使用如下的Action方法:
C# :
using CrystalDecisions.CrystalReports.Engine; public ActionResult Report() { ReportClass rptH = new ReportClass(); rptH.FileName = Server.MapPath("[reportName].rpt"); rptH.Load(); rptH.SetDataSource([datatable]); Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); return File(stream, "application/pdf"); }
VB.NET:
Imports CrystalDecisions.CrystalReports.Engine Public Function Report() As ActionResult Dim rptH As New ReportClass() rptH.FileName = Server.MapPath("[reportName].rpt") rptH.Load() rptH.SetDataSource([datatable]) Dim stream As IO.Stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat) Return File(stream, "application/pdf") End Function
我们在工作中遇到过类似的情况.
我们使用的解决方案:
为报告创建单独的目录
为报告创建正常的ASPX页面
我们还没有看到任何问题(除了正常的Crystal之外).