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 и посмотрите, как на самом деле отображается источник изображения?

Другие вопросы по тегам