ASP.NET MVC: RenderAction для действия при записи изображения генерирует исключение - PullRequest
3 голосов
/ 22 февраля 2011

У меня есть действие, возвращающее изображение:

    public void SensorData(int id, int width = 300, int height = 100)
    {
        using (var repo = new DataRepository())
        {
            var sensor = repo.GetSensor(id);
            if (sensor == null) return;

            var chart = new Chart(width, height);
            chart.AddSeries(name: "Values", 
                            chartType: "line", 
                            xValue: sensor.DataValues.Select(s => s.Date).ToList(),
                            yValues: sensor.DataValues.Select(s => s.Value).ToList());

            chart.Write();
        }
    }

Это действие отображается нормально, когда я вызываю его из браузера (например, имя_контроллера / SensorData / 6). Проблема в том, что, когда я пытаюсь просмотреть его с помощью Html.RenderAction, я получаю следующее исключение компиляции в моем представлении:

Наилучшее перегруженное совпадение методов для 'System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)' имеет недопустимые аргументы.

Это код, генерирующий исключение:

@Html.RenderAction("SensorTypes", new { id = 6});

Есть идеи о том, что может быть причиной этого?

Спасибо

Ответы [ 2 ]

5 голосов
/ 22 февраля 2011

У вас есть две возможности:

@{Html.RenderAction("SensorTypes", new { id = 6 });}

или:

@Html.Action("SensorTypes", new { id = 6 })

Сравните это с их эквивалентами, используя механизм просмотра WebForms:

<% Html.RenderAction("SensorTypes", new { id = 6 }); %>
<%= Html.Action("SensorTypes", new { id = 6 }) %>
4 голосов
/ 22 февраля 2011

Вы не можете вставлять данные изображения непосредственно в HTML. Попробуйте вместо этого использовать тег изображения и указать на действие.

<img src='@Url.Action("SensorTypes", new { id = 6})'  />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...