簡體   English   中英

SSRS報告查看器不能與ASP.NET MVC路由一起使用

[英]SSRS report viewer not working with asp.net mvc routing

我正在嘗試將SSRS報告與帶有本地報告的Asp.net MVC網站一起使用。

我嘗試了這篇文章中提到的所有內容,但是卻不斷顯示以下消息來隱藏div:

報表查看器Web控件HTTP處理程序尚未在應用程序的web.config文件中注冊。 添加到web.config文件的system.web / httpHandlers部分,或添加到Internet Information Services 7或更高版本的system.webServer / handlers部分。

處理程序已正確添加到Web配置中,並且如果我直接導​​航到aspx頁面(通過,則報表將起作用),但是由於不涉及視圖引擎,因此我無法使用任何剃刀助手,因此僅在使用路由時才會出現此問題。

我有RouteExistingFiles = false並忽略了以下路由:

 {resource}.axd/{*pathInfo}; {resource}.aspx/{*pathInfo}; {resource}.ascx/{*pathInfo}; 

和禁用BlockViewHandler從webconfig中刪除。

我正在使用Visual Studio 2012的Microsoft.ReportViewer(版本11.0.0.0)

編輯這個帖子從蘇格蘭人Hanselman的有關使用剃刀觀點與ASPX母版頁,我做的完全相反,使用剃刀布局ASPX用戶控制,但此Microsoft報表查看器不使用這種方法的工作。

由於您的評論,我找到了原因,因為它無法正常工作。

我有一個使用報表查看器的用戶控件,以及一個使用該用戶控件顯示報表的aspx頁面。 如果我直接導​​航至報表,例如:myhost / Views / Shared / ReportViewer.aspx,它將起作用;如果我使用路由,如:myhost / report / myreport,它將無法正常工作

當您直接導航到頁面時,頁面是由“傳統” Web表單基礎結構呈現的,因此報告查看器所需的所有元素(視圖狀態,腳本管理器和子菜單)均可用,並且報告查看器可以正常工作。

使用路由導航時,形成以下注釋:

是,創建一條路由,使MVC控制器處理reportviewer,該控制器將返回一個剃刀視圖,該視圖使用Html.RenderPartial(“ ReportControl”)呈現報告用戶控件。

在這種情況下,您將呈現傳統的Web表單,就好像它是一個剃須刀頁面一樣。 當您這樣做時,報告查看器控件所需的所有基礎結構都將丟失(尤其是視圖狀態),因此它不起作用。

因此,您需要將報告查看器頁面顯示為傳統的Web表單。 您可以使用javascript在新窗口/標簽中打開它。 如果您仍想將其集成到現有的MVC頁面中,則唯一的解決方案是使用<iframe>並在其中呈現報表。

將其直接集成到MVC頁面中的另一種解決方案是使用Reporting Services Web服務呈現報告,並將輸出發送到瀏覽器(例如,以.jpg圖像或PDF doc)。 但是,無論選擇哪種格式,它都將缺乏報表查看器的交互性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM