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/

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

  • 相关阅读:
    function to_timestamp(timestamp without time zone, unknown) does not exist
    Xshell连接不上Ubuntu解决方式
    怎样使用MobaXterm上传文件到远程Linux系统 MobaXterm怎么使用连接远程服务器?
    notepad++怎样删除空行
    思维脑图在线制作工具网址
    @ApiImplicitParams
    .bat批出处理文件
    主题模型及其在文本情感分析中的应用
    表达式求职JAVA(转)
    2013华为校园招聘java实现(大家水个回复啊)
  • 原文地址:https://www.cnblogs.com/024hi/p/1913691.html
Copyright © 2011-2022 走看看