[ASP.NET MVC3]Chart的ActionResult扩展

简介:

ASP.NET3为我们带来了很多新特性,其中ChartHelper也是相当给力。比如我们要生成一张这样的图表:

image

我们需要在controller中这样写(这里不考虑通过ViewModel在页面上通过Chart生成图表的方式):

public ActionResult Chart2() {
    var chart = new Chart(width: 500, height: 300, theme: ChartTheme.Blue)
        .AddSeries(
            chartType: "bar",
            legend: "Rainfall",
            xValue: new[] { "南京", "武汉", "上海", "苏州", "沈阳" },
            yValues: new[] { "95", "80", "70", "72", "92" })
        .AddTitle("分公司年末预测率汇总")
        .SetXAxis(title: "分公司")
        .SetYAxis(title: "预测率(%)");
    chart.Write();
    return null;
}

然后页面上用一个img标签载入action生成的图片

<img src="/Home/Chart2" alt="测试图表2" />

 

但是那个return null是不是有点过分的ugly了?为此我们可以简单编写一个ChartResult:

public class ChartResult : ActionResult {
    private readonly Chart _chart;
    private readonly string _format;

    public ChartResult(Chart chart, string format = "png") {
        if (chart == null)
            throw new ArgumentNullException("chart");

        _chart = chart;
        _format = format;

        if (string.IsNullOrEmpty(_format))
            _format = "png";
    }

    public Chart Chart {
        get { return _chart; }
    }

    public string Format {
        get { return _format; }
    }

    public override void ExecuteResult(ControllerContext context) {
        _chart.Write(_format);
    }
}

(注意这里用到了可选参数,如果您还在用.NET3.5,请自行调整)

 

最终controller中的代码:

public ActionResult Chart2() {
    var chart = new Chart(width: 500, height: 300, theme: ChartTheme.Blue)
        .AddSeries(
            chartType: "bar",
            legend: "Rainfall",
            xValue: new[] { "南京", "武汉", "上海", "苏州", "沈阳" },
            yValues: new[] { "95", "80", "70", "72", "92" })
        .AddTitle("分公司年末预测率汇总")
        .SetXAxis(title: "分公司")
        .SetYAxis(title: "预测率(%)");
return new ChartResult(chart);
}

 

OK,have fun~MSCNTAC Logo













本文转自紫色永恒博客园博客,原文链接:  http://www.cnblogs.com/024hi/archive/2010/12/22/1913691.html,如需转载请自行联系原作者

相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
42 0
|
1月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
29 0
|
1月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
100 5
|
3月前
|
PHP Windows
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0
|
3月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
124 0
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
52 0
|
8月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
107 0
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
117 0