随着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#

相关阅读:

【推荐】中铁、中石油等大型企业的复杂报表解决方案

ActiveReports11 SP1 新特性

ActiveReports11 新特性

在ASP.NET MVC 中使用ActiveReports报表控件的更多相关文章

  1. ActiveReports 报表控件官方中文入门教程 (1)-安装、激活以及产品资源

    本系列文章主要是面向初次接触 ActiveReports 产品的用户,可以帮助您在三天之内轻松的掌握ActiveReports控件的基本使用方法,包括安装.激活.创建报表.绑定数据源以及发布等内容.本 ...

  2. ActiveReports 报表控件官方中文入门教程 (2)-创建、数据源、浏览以及发布

    本篇文章将阐述首次使用 ActiveReports 报表控件 的方法,包括添加报表文件.绑定数据源以及如何发布报表等内容. ActiveReports 报表控件官方中文入门教程 (1)-安装.激活以及 ...

  3. ActiveReports 报表控件V12新特性 -- 无需ETL处理,即可实现跨数据源分析数据

    ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...

  4. ActiveReports 报表控件官方中文新手教程 (1)-安装、激活以及产品资源

     本系列文章主要是面向初次接触 ActiveReports 产品的用户,能够帮助您在三天之内轻松的掌握ActiveReports控件的基本用法,包含安装.激活.创建报表.绑定数据源以及公布等内容. ...

  5. ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表

    本篇文章将介绍区域报表和页面报表的常见使用场景.区别和选择报表类型的一些建议,两种报表的模板设计.数据源(设计时和运行时)设置.和浏览报表的区别. ActiveReports 报表控件官方中文入门教程 ...

  6. ActiveReports报表控件V11 SP1版本正式发布!

    无需编码,即可轻松搞定商业报表六大需求的 ActiveReports 报表控件,于今日宣布正式发布 V11 SP1 版本,并在其 官方网站 提供免费下载. V11 版本是 ActiveReports ...

  7. ActiveReports 报表控件V12新特性 -- RPX报表转换为RDL报表

    ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...

  8. ActiveReports 报表控件V12新特性 -- 新增矩表的RepeatToFill属性

    ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...

  9. ActiveReports 报表控件V12新特性 -- 文本框和标签控件的浓缩

    ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...

随机推荐

  1. [Umbraco] 自定义DataType中Data Editor Setting Type

    上一篇介绍了在定义Document Type中的属性时用到的Data Type,当使用dropdown list如何调用外部数据源,可以根据提供的数据连接字符串,sql语句就能实现你想要显示的数据. ...

  2. opencv2函数学习之flip:实现图像翻转

    在opencv2中,flip函数用来进行图片的翻转,包括水平翻转,垂直翻转,以及水平垂直翻转. void flip(const Mat& src, Mat& dst, int flip ...

  3. IIS 站点部署多级域名

    当站点的规模达到一定程度,往往会对业务进行拆分,部署到一台服务器的不同站点,,而一个域名(顶级域名)只能绑定一个站点(核心站点),这个时候就通过给顶级域名创建子域名的方式(理论上一个顶级域名可以绑定5 ...

  4. C# 自定义类型通过实现IFormattable接口,来输出指定的格式和语言文化的字符串(例:DateTime)

    常规的调用ToString()方法,存在两个问题. (1).调用者无法控制字符串的格式 (2).调用者不能方便的选择一种特定的语言文化来格式化字符串. 在开发一些国际化的应用时,应用程序需要调用与当前 ...

  5. 【Java初探02】——Java语言基础

    本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构. Java语言基础的大致组成 java主类结构 基本的数据类型 变量与常量 运算 ...

  6. 神经网络优化方法总结:SGD,Momentum,AdaGrad,RMSProp,Adam

    1. SGD Batch Gradient Descent 在每一轮的训练过程中,Batch Gradient Descent算法用整个训练集的数据计算cost fuction的梯度,并用该梯度对模型 ...

  7. bigdata-02-hadoop2.8.4-resourceHA安装

    1, 电脑环境准备 1), 关闭selinux vim /etc/selinux/config SELINUX=disabled 2), 时间同步 yum -y install chrony 修改时间 ...

  8. gson和fastjson

    实体类转string的时候gson会对 & 进行url编码; fastjson不会

  9. 使用显式的Lock对象取代synchronized关键字进行同步

    Java SE5的java.util.concurrent类库还包含有定义在java.util.concurrent.locks中的显式的互斥机制.Lock对象必须被显式地创建.锁定和释放.因此,它与 ...

  10. Tomcat学习总结(15)—— Tomcat优化时的参数分析

    (1).maxHttpHeaderSize=”8192” 此选项用于配置:来自于客户端请求的Request和Response的HTTP header 的最大长度,以字节计算.如果不设置,该属性为409 ...