zoukankan      html  css  js  c++  java
  • [ASP.NET MVC3]Chart的ActionResult扩展

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

    image

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

    public ActionResult Chart2() {
        var chart = new Chart( 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( 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://024hi.cnblogs.com/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

  • 相关阅读:
    3D有向包围盒与球体碰撞的算法
    搞笑段子,纪念我那逝去已久的大学生活
    [22] 计算几何图形包围盒与包围球的算法
    [21] Mesh法线的生成算法
    [20] 鼓状物(Drum)图形的生成算法
    [19] 半球形(Hemisphere)图形的生成算法
    [18] 螺旋楼梯(Spiral Stairs)图形的生成算法
    MySQL中MyISAM与InnoDB区别及选择,mysql添加外键
    在sublime3中docblockr插件配置apidoc接口文档注释模板
    sublime3 docblocker插件定制自己的注释,配置步骤
  • 原文地址:https://www.cnblogs.com/024hi/p/1913691.html
Copyright © 2011-2022 走看看