隨着MVC模式的廣泛運用,對Web應用系統的開發帶來了巨大的影響,我們好像又回到了原來的ASP時代,視乎這是一種后退而不是一種進步,不過MVC模式給我們帶來的影響不僅限於我們所看到的這一點.。MVC看上去是使用原來的HTML頁面來呈現內容,但其核心是 .NET路由引擎,通過.NET路由引擎使得MVC設計模式更容易被理解,更方便開發人員所使用,而且不必擔心視圖狀態以及頁面的生命周期。
ActiveReports最初是為傳統的 .NET Web Forms 系統所設計,但也可用於MVC模式的系統中。下面就來談一談ActiveReports 6.0如何用於MVC模式的系統中。
1、創建一個MVC 3 工程,並添加ActiveReports 6.0到工程中
2、在工程中添加一個Controller,然后在Controller中添加一個Action方法。我們將報表對象存放在ViewData對象中,通過ViewData將報表從Controller傳遞到View中。
public class HomeController : Controller { public ActionResult Report() { ViewData["Report"] = new _rpt; return View(); } }
3、通過Actiion方法創建一個View Page,並添加ActiveReports的WebViewer到View Page中:
<ActiveReportsWeb:WebViewer ID="WebViewer1" runat="server" height="559px" width="100%" onload="WebViewer1_Load" ViewerType="AcrobatReader"> </ActiveReportsWeb:WebViewer>
4、 MVC中的View Page並不支持 .cs 的后台代碼文件,這一點是和MVC設計理念相符的。然而,我們需要從ViewData中得到Controller中傳過來的報表對象,並將報表對象設置給 WebViewer,這些邏輯需要在WebViewer的Load事件中完成:
<script runat="server"> protected void WebViewer1_Load(object sender, EventArgs e) { WebViewer1.Report = (DataDynamics.ActiveReports.ActiveReport)ViewData["Report"]; } </script>
5、當 WebViewer的ViewType設置為AcrobatReader時,我們需要設置相應的Http Handlers,為了路由引擎不處理這些Http請求,並保持Http請求的默認行為,我們需要對IgnoreRoute進行相應的設置,修改 Global.asax中的RegisterRoutes方法:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{*allarcachitems}", new { allarcachitems = @".*\.ArCacheItem(/.*)?" }); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); }
6、在Web.config中添加以下Http Handlers 的配置信息
<add verb="*" path="*.rpx" type="DataDynamics.ActiveReports.Web.Handlers.RpxHandler, ActiveReports.Web, Version=x.x.xxxx.x, Culture=neutral, PublicKeyToken=cc4967777c49a3ff"/> <add verb="*" path="*.ActiveReport" type="DataDynamics.ActiveReports.Web.Handlers.CompiledReportHandler, ActiveReports.Web, Version= x.x.xxxx.x, Culture=neutral, PublicKeyToken=cc4967777c49a3ff"/> <add verb="*" path="*.ArCacheItem" type="DataDynamics.ActiveReports.Web.Handlers.WebCacheAccessHandler, ActiveReports.Web, Version= x.x.xxxx.x, Culture=neutral, PublicKeyToken=cc4967777c49a3ff"/>
7、運行程序可以查看報表

源碼下載:在ASP.NET MVC 中使用ActiveReports報表控件
同時,安裝ActiveReports產品之后,在這個目錄可以找到源代碼,C:\Users\用戶名\Documents\ComponentOne Samples\ActiveReports Developer 7\Professional\C#
相關閱讀:
