ReportViewerコントロールを表示するためにiframeまたは新しいページを使用するように言っている人をたくさん見ました。iframeを使用せずに、ページの残りの部分とインラインでコントロールを表示する方法はありますか?
12593 次
1 に答える
8
.ascx
から継承する場合は、Razorでユーザーコントロールを部分ビューとして使用できますSystem.Web.Mvc.ViewUserControl
。
この場合、フォルダ内にコントロールと必要条件ASCX
を含むを作成できます。ReportViewer
ScriptManager
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
。
public partial class ReportViewerControl : ViewUserControl
このコントロールを使用するには、Razorページで次のようにします。
@Html.Partial("ReportViewerControl", Model)
Page_Load
その後、通常どおりにコントロールのでReportViewerを設定できます。object
名前付きのにアクセスできますModel
。これを送信するモデルのタイプにキャストして、次を使用できます。
ReportViewParameters model = (ReportViewParameters)Model;
于 2013-03-04T18:28:03.380 に答える