我正在尝试使用 ASP MVC 4.0(VS 2012 RC 上的 .net 4.5)在我的页面上呈现 System.Web.UI.Datavisualization.Chart 控件。我意识到直接在 MVC 页面视图上使用 webforms 控件并不容易/标准做法,所以我试图在控制器中使用一个动作来返回视图可以显示的图表图像。
在 HomeController 我有:
public FileResult DataChart()
{
Chart newChart = new Chart()
{
Width = 500,
Height = 300
};
List<double> DataPoints = new List<double>();
new LogModelContainer().Measurements.Select(i => i.MU).ToList().ForEach(i => DataPoints.Add(i));
Series newSeries = new Series()
{
ChartType = SeriesChartType.Bar
};
newSeries.Points.Add(DataPoints.ToArray());
newChart.Series.Add(newSeries);
newChart.ChartAreas.Add(new ChartArea());
var returnVal = new MemoryStream();
newChart.SaveImage(returnVal);
return File(returnVal.GetBuffer(), @"image/png");
}
注意:图表的数据来自链接到 SQL 数据库的 EF 5 模型(数据确实存在并正确加载)。
我正在尝试从 Index.cshtml 中使用它,如下所示:
<img src="/HomeController/DataChart" alt="" />
这似乎等同于我在 CodePlex 上的示例中使用的内容(MVC 图表控件示例 CodePlex我在网上找到的,除了我不需要将参数传递给我的操作。
当我运行代码时,我得到的只是该图表所在页面上的损坏图像图标。我是一个完整的 ASP 菜鸟(这是我第一个使用该技术的项目),所以很可能我正在做一些愚蠢的事情。谁能告诉我怎么了?谢谢