【发布时间】:2014-11-19 16:47:55
【问题描述】:
我是这个图表的新手,我这样做的方式非常低效,所以我认为应该有更好的方法。
目前我有一个控制器,它创建一个模型,该模型从数据库中提取所有数据,并进行大量解析等,然后将所有内容显示在视图中,其中数据分布在多个表中。
View 中还有一系列 img 调用控制器中的动作。该操作会生成模型的新实例并使用数据创建图表图像,然后将其返回给视图。
既然我已经在视图中拥有了所需的数据,我如何才能完全从那里创建图表?或者更好的是,在模型中创建它并在视图中引用它?这应该是可能的,但我的谷歌搜索没有结果。
这是一些代码。
查看
<% foreach (ProjectEnrollment projectEnrollment in Model.ProjectEnrollments) { %>
<img src='/pts/reports/Chart?year=<%= Model.Year %>&projectID=<%= projectEnrollment.ProjectID %>' alt="Chart"/>
<% } %>
控制器
public FileResult Chart(string year, int projectID)
{
ProjectEnrollment projectEnrollment = new ProjectTargetVsActualModel(year).ProjectEnrollments.SingleOrDefault(p => p.ProjectID == projectID);
if (projectEnrollment != null)
{
Dictionary<string, IEnumerable<double>> data = new Dictionary<string, IEnumerable<double>>();
data.Add("P", projectEnrollment.P.Select<int, double>(i => i).ToList());
data.Add("Planned P", projectEnrollment.PlannedP.Select<int, double>(i => i).ToList());
data.Add("S", projectEnrollment.S.Select<int, double>(i => i).ToList());
data.Add("Planned S", projectEnrollment.PlannedS.Select<int, double>(i => i).ToList());
ChartHelper ch = new ChartHelper();
return ch.CreateChart(SeriesChartType.Line, 800, 300, null, projectEnrollment.Headers, data);
}
return null;
}
我知道这些代码 sn-ps 缺少很多细节。但我希望这足以了解我目前的工作方式。
如您所见,当前的设置效率很低。有没有办法只用一个模型实例来做到这一点?任何建议将不胜感激。谢谢。
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-mvc-3 charts