ASP MVC 4.0 диаграмма контроля рендеринга изображения правильно
Я пытаюсь получить элемент управления System.Web.UI.Datavisualization.Chart для отображения на моей странице с помощью ASP MVC 4.0 (.net 4.5 на VS 2012 RC). Я понимаю, что это непростая / стандартная практика - использовать элементы управления веб-формами в представлениях страниц MVC напрямую, поэтому я пытаюсь использовать действие в контроллере для возврата изображения диаграммы, которое может отображать представление.
В 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");
}
Примечание: данные для диаграммы поступают из модели EF 5, связанной с базой данных SQL (данные действительно существуют и загружаются правильно).
Я пытаюсь использовать его из Index.cshtml следующим образом:
<img src="/HomeController/DataChart" alt="" />
Мне кажется, это эквивалентно тому, что используется в примере на CodePlex(пример CodePlex для MVC Chart Control Code), который я обнаружил в Интернете, за исключением того, что мне не требуется передавать параметр в мои действия.
Все, что я получаю, когда запускаю код, это значок разбитого изображения на странице, где должен быть этот график. Я полный ASP Noobie (это мой первый проект с использованием технологии), поэтому вполне возможно, что я делаю что-то глупое. Может кто-нибудь сказать мне, что не так? Спасибо
1 ответ
Не будет ли img src /Home, а не /HomeController? (Не уверен, что они эквивалентны, но я всегда использовал только имя контроллера, не добавляя слово "контроллер"). При этом посмотрите на интерфейс с помощью инструментов разработчика в Chrome/FF и посмотрите, как на самом деле отображается источник изображения?