我正在尝试使用ASP MVC 4.0(VS 2012 RC上的.net 4.5)在我的页面上呈现一个System.Web.UI.Datavisualization.Chart控件。我意识到直接在MVC页面视图上使用webforms控件并不容易/标准做法,所以我试图在控制器中使用一个操作来返回视图可以显示的图表图像。
在家庭控制器我有:
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.chtml中使用它,如下所示:
<img src="/HomeController/DataChart" alt="" />
这似乎相当于我在CodePlex(MVC图表控制示例CodePlex)上的示例中使用的内容,除了我不要求将参数传递给我的操作之外。
当我运行代码时,我得到的只是这个图表所在页面上的破损图像图标。我是一个完全的ASP新手(这是我第一个使用该技术的项目),所以我很可能在做一些愚蠢的事情。有人能告诉我怎么了吗?感谢