[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,如需转载请自行联系原作者

相关文章
|
前端开发 Java 数据库连接
Spring MVC 扩展和SSM框架整合
通过以上步骤,我们可以将Spring MVC扩展并整合到SSM框架中。这个过程包括配置Spring MVC和Spring的核心配置文件,创建控制器、服务层和MyBatis的Mapper接口及映射文件。在实际开发中,可以根据具体业务需求进行进一步的扩展和优化,以构建更加灵活和高效的企业级应用程序。
338 5
|
监控 安全 API
Docker + .NET API:简化部署和扩展
Docker + .NET API:简化部署和扩展
249 1
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
432 7
|
监控 安全 API
最完美的扩展Docker + .NET API:简化部署和扩展
最完美的扩展Docker + .NET API:简化部署和扩展
359 0
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
367 0
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
358 0
|
数据库
分享一个 .NET EF 6 扩展 Where 的方法
分享一个 .NET EF 6 扩展 Where 的方法
229 0
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
508 0
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
812 0