2016-11-05 37 views
0

我有一個使用VS2013的MVC5項目,並試圖按照這12步創建一個rdlc報告。 http://www.dotnetawesome.com/2015/01/how-to-display-rdlc-report-in-report-viewer-control-into-mvc4.htmlMVC5 - 通過ASPX創建RDLC報告,查看必須來自ViewPage錯誤

但是,我一直在部分視圖渲染中得到這個錯誤。

The view must derive from ViewPage, ViewPage<TModel>, ViewUserControl, or ViewUserControl<TModel>. 

我查找了所有類似的文章,試圖在web.config中通過繼承添加對web.config中System.Web.Mvc.ViewPage的引用。還嘗試在Global.asax/RouteConfig.cs中添加IgnoreRoute。

routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); 

然而,我還是收到此錯誤:(有什麼建議?)

Server Error in '/' Application. 

The view at '~/Views/Shared/RPT_Test_ASPX.aspx' must derive from ViewPage, ViewPage<TModel>, ViewUserControl, or ViewUserControl<TModel>. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The view at '~/Views/Shared/RPT_Test_ASPX.aspx' must derive from ViewPage, ViewPage<TModel>, ViewUserControl, or ViewUserControl<TModel>. 

Source Error: 


Line 3: } 
Line 4: <h2>My Test List</h2> 
Line 5: @Html.Partial("RPT_Test_ASPX") 
Line 6: 
Line 7: 

Source File: c:\SVN\TestProject\trunk\TestProject\Views\Report\Index.cshtml Line: 5 

Stack Trace: 


[InvalidOperationException: The view at '~/Views/Shared/RPT_Test_ASPX.aspx' must derive from ViewPage, ViewPage<TModel>, ViewUserControl, or ViewUserControl<TModel>.] 
    System.Web.Mvc.WebFormView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +278 
    System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +382 
    System.Web.Mvc.HtmlHelper.RenderPartialInternal(String partialViewName, ViewDataDictionary viewData, Object model, TextWriter writer, ViewEngineCollection viewEngineCollection) +467 
    System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData) +155 
    System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName) +91 
    ASP._Page_Views_Report_Index_cshtml.Execute() in c:\SVN\TestProject\trunk\TestProject\Views\Report\Index.cshtml:5 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +270 
    System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +122 
    System.Web.WebPages.StartPage.RunPage() +63 
    System.Web.WebPages.StartPage.ExecutePageHierarchy() +100 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +131 
    System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +695 
    System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +382 
    System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +431 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +39 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +116 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +529 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +106 
    System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +321 
    System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +185 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40 
    System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37 
    System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44 
    System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +39 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37 
    System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39 
    System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39 
    System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +39 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9644097 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.1055.0 

回答

1

終於在這裏找到了答案: https://reportviewerformvc.codeplex.com/wikipage?title=Getting%20Started

基本上,通過的NuGet安裝ReportViewerForMvc,

PM> Install-Package ReportViewerForMvc 

它會放一個「ReportViewerWebForm.aspx」p年齡在你的項目的根源。在控制器中執行所有數據源映射,將其放入ViewBag中,然後調用View。

在View(CSHTML)頁面,在上面添加

@using ReportViewerForMvc 

,並在正文中添加這個瀏覽器。

@Html.ReportViewer(ViewBag.ReportViewer as Microsoft.Reporting.WebForms.ReportViewer) 

它適用於我。希望這有助於他人。


這裏是我的控制器代碼:

MyEntities context = new MyEntities(); 
var myData = context.usp_MyStorProc(_var1, _var2); 

ReportViewer reportViewer = new ReportViewer(); 

reportViewer.LocalReport.ReportPath = Request.MapPath(Request.ApplicationPath); 

reportViewer.LocalReport.DataSources.Clear(); 
ReportDataSource rdc = new ReportDataSource("MyDataSourceName", myData); 

reportViewer.LocalReport.DataSources.Add(rdc); 
reportViewer.LocalReport.Refresh(); 
reportViewer.ProcessingMode = ProcessingMode.Local; 
reportViewer.LocalReport.ReportPath += @"Reports/MyReportName.rdlc"; 
reportViewer.Width = 900; 
reportViewer.Height = 600; 
reportViewer.ZoomMode = ZoomMode.PageWidth; 

ViewBag.MyReportName = reportViewer; 

一定要包括所有的ReportViewer引用(可在GAC中找到或者從微軟的網站下載):

  • Microsoft.ReportViewer.Common
  • Microsoft.ReportViewer.ProcessingObject型號
  • Microsoft.ReportViewer.WebForms
  • Microsoft.ReportViewer.WinForms
相關問題