• [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/

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

  • 相关阅读:
    U9在SQL Server上的性能优化经验(转述) — 之 分页
    家里买了XBOX 360 Kinect
    哦,真是“不幸”的消息
    U9在SQL Server上的性能优化经验(转述) — 之 包含列索引
    Silverlight 4处理StartWith的BUG
    IIS HTTP重定向配置、参数设置
    【代码保留】怎样添加一个多选搜索引擎
    NSLog 使用
    ObjectiveC(IOS)推荐的属性读写方法
    16进制颜色(html颜色值)字符串转为UIColor
  • 原文地址:https://www.cnblogs.com/024hi/p/1913691.html
Copyright © 2020-2023  润新知