← 返回所有博客文章

ASP.NET MVC 在经过长时间的发展之后,在生产环境中逐渐得到大家的认可,特别是 ASP.NET MVC 4 发布之后,不少新系统选择基于该技术进行研发。ActiveReports在6.0以后支持ASP.NET的MVC框架,而本文主要介绍 ActiveReports在 ASP.NET MVC 4 中的使用方法。

第一步,在 VS 中创建一个 ASP.NET MVC 4 的应用程序

2015-02-04_094626

选择视图引擎为 Razor,暂不创建单元测试项目

2015-02-04_095144

创建完成之后,通过F5运行程序,看看一个空的 ASP.NET MVC 4程序的基本情况

image

 

MVC 运行需要有Model、View和Controller,因为示例程序报表都是采用直接数据源绑定,所以暂不添加Model数据,只需关系View和Controller。

第二步、在应用程序中添加报表

2015-02-04_133320

 

2015-02-04_133526

 

第三步、在Controller中添加获取报表的Action方法

创建HelloWorldController用于处理前端对报表的请求。

2015-02-04_133602

2015-02-04_133656

从HelloWorldController中的 Index中返回 PageReport1.rdlx 报表,代码如下:

    public ActionResult Index()
    {
        GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("/PageReport1.rdlx")));
        ViewData.Model = report;
        return View();
    }

在创建完成 Action 之后,我们需要创建与之对应的 View。

第三步、创建 Action 对应的视图 View

在 Index方法上鼠标右键,点击添加视图,并在出现的对话框中设置以下属性

2015-02-04_133901

2015-02-04_133918

创建完视图之后,我们需要在视图中显示报表,但是 ActiveReports 所提供的报表查看器控件 WebViewer 是一个服务端控件,无法直接添加到 cshtml 视图页面中,此时,我们就需要创建一个 MVC 4 视图用户控件。

第四步、创建视图用户控件用于加载 WebViewer 控件

在 Views\Home 文件夹上鼠标右键选择【添加】 >> 【MVC 4 视图用户控件】,添加一个名为 DefaultViewer 的视图用户控件。

2015-02-04_134042

2015-02-04_134126

视图用户控件添加完成之后,我们就可以从VS工具箱中将 WebViewer 控件添加到页面中,然后根据自己的需求设置 WebViewer 的相关属性

2015-02-04_134339[5]

需要在页面中添加<head runat=”server”> 的标签,完整代码如下:

此外,我们需要在视图用户控件中添加以下代码来设置 WebViewer 显示的报表。

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        WebViewer1.Report = Model;
    }
</script>
<head id="Head1" runat="server">
</head>
<ActiveReportsWeb:WebViewer ID="WebViewer1" runat="server" Height="600px" Width="960px"></ActiveReportsWeb:WebViewer>

然后,在视图页面 中添加以下代码来加载视图用户控件

@{
    ViewBag.Title = "Report";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Report</h2>
@Html.Partial("DefaultViewer",ViewData.Model as object)

 

第六步、配置应用程序的路由设置

在MVC程序中路由设置非常关键,为了能够正常使用ActiveReports,需要添加以下路由配置

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("ActiveReports.ReportService.asmx/{*pathInfo}");
        routes.IgnoreRoute("Grapecity.ActiveReports.Flash.v9.swf");
        routes.IgnoreRoute("{*allActiveReport}", new { allActiveReport = @".*\.ar9(/.*)?" });
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

 

第七步、浏览报表

 

输入地址http://localhost:端口号/HelloWorld

运行截图:

2015-02-11_100535

 

源码下载:VS2012 + ASP.NET MVC4 + ActiveReports