惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
罗磊的独立博客
F
Fortinet All Blogs
T
Threatpost
Y
Y Combinator Blog
博客园_首页
美团技术团队
Security Latest
Security Latest
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
V
V2EX - 技术
The Cloudflare Blog
L
LINUX DO - 热门话题
博客园 - 司徒正美
Jina AI
Jina AI
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
The Hacker News
The Hacker News
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
Latest news
Latest news
NISL@THU
NISL@THU
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
雷峰网
雷峰网
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
W
WeLiveSecurity
D
DataBreaches.Net
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
TaoSecurity Blog
TaoSecurity Blog
S
Securelist
Help Net Security
Help Net Security

博客园 - 紫色永恒

一段旅程的结束和另一端旅程的开始 Silverlight Client←→Server数据同步备忘代码 Expression Blend 5 Preview For Silverlight5 RC已发布 Siverlight5新功能/改进总结 [译]WCF RIA Services中的集合(2) [译]WCF RIA Services中的集合(1) Silverlight通过MVVM实现多语言实时切换(含源代码) Silverlight中服务通信方式的选择(WCF、Data Service、Ria Service) 你应该知道的,那些未在Silverlight5Beta中出现的特性 记录来敦煌一周的情况 Silverlight奇技银巧7 - 巧用文件生成时间强制客户端载入最新xap文件 如何将ASP.NET MVC2项目升级到MVC 3 RC Silverlight 4 GDR 1 更新 Silverlight奇技银巧6 - UserControl的继承 Silverlight 4 Training Kit更新 Silverlight4的DataGrid改进与Toolkit2010.4中的新玩意 Win03+IIS6部署.NetFramework4(ASP.NET4)的一点小经验 4.13 Silverlight4 Will Come Silverlight4RC的API汇总(文本文件)
[ASP.NET MVC3]Chart的ActionResult扩展
紫色永恒 · 2010-12-22 · via 博客园 - 紫色永恒

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