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/

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

  • 相关阅读:
    团队博客----用户需求调研报告
    结对开发----买书问题
    团队开发----NABC分析
    js 中中括号,大括号使用详解
    FileZilla Server 防火墙端口开启设置 windows 2008 win
    在其他的电脑上配置绿色Jre+tomcat运行环境
    工资发给平庸,高薪给予责任。奖金发给成绩,股权分给态度,荣誉颁给理想!
    SSH框架(四) struts2+spring3.0的登陆示例
    SSH框架(三) struts2的登陆示例
    SSH (Struts2+Spring3.0+Hibernate3)框架(二) 框架的配置
  • 原文地址:https://www.cnblogs.com/024hi/p/1913691.html
Copyright © 2011-2022 走看看