MVC3给出了一张空白图表

时间:2012-08-12 09:34:07

标签: asp.net-mvc charts

My LoggedUserHome.Controller对图表

有此操作
 public ActionResult GetGender()
    {


        var AllGender = new List<string>(from c in db.tbl_Profile select c.sex).ToList();
        var Groping = AllGender
           .GroupBy(i => i)
           .Select(i => new { sex = i.Key, CountGet = i.Count() }).ToArray(); //get a count for each

        var key = new Chart(width: 300, height: 300)
            .AddSeries(
            chartType: "pie",
            legend: "Gender Popularity",
            xValue: Groping, xField: "sex",
            yValues: Groping, yFields: "CountGet")
            .Write("gif");
        return null;

    }

在我看来,我已经给出了

<img src="/LoggedUserHome/GetGender"/>

感谢Nexuss ToArray()建议我设法通过阅读数据库来填充图表..非常感谢Nexuzz

1 个答案:

答案 0 :(得分:1)

简单的解决方案是尝试替换

<img src="/LoggedUserHome/GetGender"/>

视图中的

@{
    var d = new PrimeTrekkerEntities1();
    var AllGender = new List<string>(from c in d.tbl_Profile select c.sex).ToList();
    var Groping = AllGender
        .GroupBy(i => i)
        .Select(i => new { sex = i.Key, Count = i.Count() }); //get a count for each

    var key = new Chart(width: 600, height: 400)
        .AddSeries(
        chartType: "pie",
        legend: "Gender Popularity",
        xValue: Groping, xField: "sex")
        .Write("gif");
}

并且“是”在这种情况下你不需要采取行动GetGender。

更复杂的解决方案是离开

<img src="/LoggedUserHome/GetGender"/>
在视图中

,但使GetGender()操作返回图表图像URL。因此,你可以在GetGender()中做的是以某种方式将图表渲染到图像文件中并返回包含图像路径的响应。

<强>更新

我稍微更新了您的示例,因此它会在图表中显示数据。这就是我所拥有的:

@{
    var AllGender = new List<string>() { "Male", "Female", "Male"};
    var Groping = AllGender
        .GroupBy(i => i)
        .Select(i => new { sex = i.Key, Count = i.Count() }).ToArray(); //get a count for each

    var key = new Chart(width: 600, height: 400)
        .AddSeries(
        chartType: "pie",
        legend: "Gender Popularity",
        xValue: Groping, xField: "sex",
        yValues: Groping, yFields: "count")
        .Write("gif");
}

与您的示例有两个主要区别:

  • Groping现在是一个数组。据我所知,Chart期望枚举数据
  • 我添加了yValuesyFields参数,因此图表知道在Y轴上使用的值