如何使用Razor的ReportViewer控件?

时间:2013-03-04 18:28:03

标签: asp.net-mvc razor asp.net-mvc-4 reporting-services

我见过很多人说要使用iframe或新页面来显示ReportViewer控件。有没有办法在不使用iframe的情况下将控件显示在页面的其余部分内?

1 个答案:

答案 0 :(得分:8)

如果他们继承自.ascx,您可以将System.Web.Mvc.ViewUserControl用户控件用作Razor的部分视图。

在这种情况下,您可以在ASCX文件夹中创建包含ReportViewer控件和必备ScriptManager的{​​{1}}:

View\Controller

在代码隐藏中,请确保在<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ReportViewerControl.ascx.cs" Inherits="MyApp.Views.Reports.ReportViewerControl" %> <%@ Register TagPrefix="rsweb" Namespace="Microsoft.Reporting.WebForms" Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="scriptManager" runat="server" EnablePartialRendering="false" /> <rsweb:ReportViewer Width="100%" Height="100%" ID="reportViewer" runat="server" AsyncRendering="false" ProcessingMode="Remote"> <ServerReport /> </rsweb:ReportViewer> </div> </form> 中包含以下内容;否则,您将无法在报告视图中使用任何选项:

Page_Init

您还希望确保您的控件继承自protected void Page_Init(object sender, EventArgs e) { // Required for report events to be handled properly. Context.Handler = Page; }

System.Web.Mvc.ViewUserControl

要使用此控件,您可以在Razor页面中执行以下操作:

public partial class ReportViewerControl : ViewUserControl

然后,您可以像往常一样在控件的@Html.Partial("ReportViewerControl", Model) 中设置ReportViewer。您将可以访问名为Page_Load的{​​{1}},您可以将其转换为您发送的模型类型,然后使用:

object