1

我的 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

4

1 回答 1

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 轴上使用什么值
于 2012-08-12T19:04:06.193 回答