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
答案 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期望枚举数据yValues
和yFields
参数,因此图表知道在Y轴上使用的值