【问题标题】:ASP.NET MVC 3 ChartingASP.NET MVC 3 图表
【发布时间】: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


    【解决方案1】:

    Chart 对象可以使用 SaveImage 保存到 MemoryStream 中。 MemoryStreams 可以使用 ToArray() 作为 byte[] 输出。我做了所有这些并将 byte[] 存储在模型中。

    在View中,byte[]可以显示为图片,像这样。

    <% var base64 = Convert.ToBase64String(projectEnrollment.Chart);
    var imgSrc = String.Format("data:image/gif;base64,{0}", base64); %>
    <img src="<%= imgSrc %>" alt="Chart"/>
    

    【讨论】:

      猜你喜欢
      • 2011-09-11
      • 1970-01-01
      • 2013-01-08
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多