我正在尝试使用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 Chart Control Example CodePlex,而不是我不要求将参数传递给我的操作。
我运行代码时得到的只是该图表所在页面上的图像图标。我是一个完整的ASP noobie(这是我使用该技术的第一个项目)所以我很可能做一些愚蠢的事情。谁能告诉我什么是错的?感谢
答案 0 :(得分:1)
img src不是/ Home而不是/ HomeController吗? (不确定它们是否相同,但我总是只使用控制器名称而不附加“控制器”一词)。话虽如此,请使用Chrome / FF中的开发人员工具查看前端,看看实际呈现的图像源是什么?