C# MVCReportViewer:报表查看器Web控件需要Web窗体上的System.Web.UI.ScriptManager

C# MVCReportViewer:报表查看器Web控件需要Web窗体上的System.Web.UI.ScriptManager,c#,asp.net,reporting-services,reportviewer,reportviewerformvc,C#,Asp.net,Reporting Services,Reportviewer,Reportviewerformvc,需要将报表与MVC应用程序集成 我使用的是来自CodePlex的MVC报告查看器 最初,我使用rdl文件作为服务器报表,它托管在报表服务器上。我可以加载报告 但要求不是将其作为服务器报告宿主,而是将rdl文件作为本地报告添加,并在运行时加载 我做了如下代码更改,将其加载为本地报告 ReportViewer reportViewer = new ReportViewer(); reportViewer.ProcessingMode = ProcessingMode.Local; var dat

需要将报表与MVC应用程序集成

我使用的是来自CodePlex的MVC报告查看器

最初,我使用rdl文件作为服务器报表,它托管在报表服务器上。我可以加载报告

但要求不是将其作为服务器报告宿主,而是将rdl文件作为本地报告添加,并在运行时加载

我做了如下代码更改,将其加载为本地报告

ReportViewer reportViewer = new ReportViewer();
reportViewer.ProcessingMode = ProcessingMode.Local;

var dataSet = this.FillDataSet(reportModel.ReportParameters);
reportViewer.LocalReport.ReportPath = string.Format(@"{0}Reports\{1}.rdlc", this.Request.MapPath(this.Request.ApplicationPath), reportModel.ReportName);
reportViewer.LocalReport.DataSources.Clear();
reportViewer.LocalReport.DataSources.Add(new ReportDataSource("DS_Report", dataSet.Tables[0]));
reportViewer.LocalReport.DataSources.Add(new ReportDataSource("DS_ChartforSalesRep", dataSet.Tables[0]));

reportViewer.ShowParameterPrompts = false;

reportViewer.DataBind();
reportViewer.LocalReport.Refresh();
reportViewer.ReportError += this.OnLoadReportError;

this.ViewBag.ReportViewer = reportViewer;
数据被加载并填充到数据集中,然后提供给报表

我在这一行遇到了一个例外

reportViewer.DataBind();
试图在网上找到一些帮助,大多数人建议添加脚本标签,如下所示

<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

如果有人能在这方面帮助我,那就太好了。

经过几天的反复试验,发现下面这句话本身就是个问题

reportViewer.DataBind();

拆下线路,一切正常。看起来,报表查看器在内部处理数据绑定。无需显式绑定。

我建议您显示来自
ReportViewerWebForm.ASPX
(与
reportviewerperformvc
捆绑在一起)的ASPX页面内容,其中执行
ReportViewer
控件。
ReportViewer
实例是由code动态生成的吗?@TetsuyaYamamoto嗨,我已经用ReportViewerWebForm.aspxSeems的内容更新了这个问题,即ASPX页面内容很好,因此它可能会变成
ReportViewerWebForm.ASPX.cs
中的代码隐藏问题。您是否包含
IsPostBack
检查
Page\u Load
方法?@TetsuyaYamamoto它实际上是一个MVC应用程序中使用的MVC报告查看器。没有代码隐藏文件。我共享的C#代码位于一个控制器中,该控制器返回视图中的报表查看器
reportViewer.DataBind();