C# MVC - 从循环中的变量绘制条形图
本文关键字:变量 绘制 条形图 循环 MVC | 更新日期: 2023-09-27 18:32:00
我的问题是回答:在模型的局部视图中显示系统.Web.帮助程序.图表
@{
var myChart = new Chart(width: 600, height: 400)
.AddTitle("Chart Title")
.AddSeries(
name: "Employee",
xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" },
yValues: new[] { "2", "6", "4", "5", "3" })
.Write();
}
有没有人能够使用 xValue 和 yValue 中循环中的值。目前在示例中,我发现所有值都是硬编码的。
我想使用 item.season 作为 X 和 item.year 作为 Y 从下面的 foreach 语句(第一次收集主题,第二次收集年份和季节):
string json2 = File.ReadAllText(@"C:'Temp'Assess.json");
var root = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<List<WebApplication1.Models.SchoolSubject>>(json2);
foreach (var subject in root)
{
<h2>@Html.Raw(subject.Subject)</h2>
foreach (var item in subject.AppScores)
{
<p>@Html.Raw(item.Season)</p>
<p>@Html.Raw(item.year)</p>
<p>@Html.Raw(item.value)</p>
}
}
包含类代码的模型:
public class SchoolSubjectAppScore
{
public string Season { get; set; }
public string year { get; set; }
public string value { get; set; }
}
public class SchoolSubject
{
public SchoolSubject() { this.AppScores = new List<SchoolSubjectAppScore>(); }
public string Subject { get; set; }
public List<SchoolSubjectAppScore> AppScores { get; set; }
}
我拥有的 JSON 文件是:
[{"Subject": "English","AppScores": [{"Season": "Winter","year": "2009", "value" : "20" }, {"Season": "Summer","year": "2009", "value" : "38"}]}, {"Subject": "Maths","AppScores": [{"Season": "Winter","year": "2009", "value" : "10"}, {"Season": "Summer","year": "2009", "value" : "27"}]}]
我想要的图表上的输出是两个系列 - 数学/英语,xValue - 季节/年份和 yValue - 值。
我的任何想法都到处寻求帮助。
这很容易。您只需要在循环中将 json 中的Season
和year
数据添加到List
即可。获得List
后,您可以将其转换为数组并将其分配给图表。请参阅下面的更新代码。
string json2 = File.ReadAllText(@"C:'Temp'Assess.json");
var root = new System.Web.Script.Serialization.JavaScriptSerialize().Deserialize<List<WebApplication1.Models.SchoolSubject>>(json2);
var seasons = new List<string>();
var years = new List<string>();
foreach (var subject in root)
{
<h2>@Html.Raw(subject.Subject)</h2>
foreach (var item in subject.AppScores)
{
<p>@Html.Raw(item.Season)</p>
<p>@Html.Raw(item.year)</p>
seasons.Add(item.Season);
years.Add(item.year);
}
}
完成上述操作后,您可以将seasons
和years
添加到图形中。
@{
var myChart = new Chart(width: 600, height: 400)
.AddTitle("Chart Title")
.AddSeries(
name: "Employee",
xValue: seasons.ToArray(),
yValues: years.ToArray())
.Write();
}