Microsoft Charting, MVC 3 и Razor - PullRequest
       26

Microsoft Charting, MVC 3 и Razor

35 голосов
/ 19 января 2011

Относится к В этой теме Интересно, кто-нибудь создал библиотеку Microsoft Charting для работы с Asp MVC 3 и Razor.

Я знаю о введенном новом помощнике по диаграммам, но посколькуочень ограничен, что на самом деле не вариант.

Создать метод действия, который возвращает изображение, также достаточно просто, но поскольку вся интерактивность нарушается (даже просто всплывающие подсказки для столбцов в гистограмме), этот методимеет несколько ограничений.

Этот пример , пожалуй, самая полезная статья, которую я нашел, но я все еще не могу заставить работать один простой график, даже если он работает при рендеринге изображения только вметод действия.Кроме того, у меня есть примеры, работающие нормально в .net 4, но, очевидно, это не образцы MVC.

SO - кто-нибудь получил, чтобы диаграммы Microsoft работали полностью в Asp MVC 3 с Razor, и могли бы опубликовать ссылку на законченное решение

Ответы [ 3 ]

14 голосов
/ 28 февраля 2011

Если вы ищете инструмент и сверло, то вот пример.Я пытался и работал как шарм для меня.Для интерактивности вам необходимо связать ImageMap с вашим изображением.

Графики MVC с интерактивностью

12 голосов
/ 20 сентября 2012

Я провел несколько дней в поисках решения, которое создает интерактивные диаграммы в MVC, но все примеры, которые я видел, были намного сложнее, чем они должны быть.

Ответ от Сарата почти идеален, но он сохраняет изображение дважды, что не очень эффективно.С помощью функции Html.RenderAction () мы можем сделать все за один проход и сделать его максимально эффективным.

Вот решение, которое я нашел:

http://blog.smirne.com/2012/09/creating-interactive-charts-with-aspnet.html

Я не видел ни одного решения, которое могло бы сделать все за один проход.Самое приятное то, что он не нуждается в каких-либо изменениях в файле web.config.Он также не пытается использовать элемент управления ASP.net в MVC.Это чистая технология MVC.

ОБНОВЛЕНИЕ

Вот код по запросу:

КОНТРОЛЛЕР:

public ActionResult Chart()
{
    var chart = buildChart();
    StringBuilder result = new StringBuilder();
    result.Append(getChartImage(chart));
    result.Append(chart.GetHtmlImageMap("ImageMap"));
    return Content(result.ToString());
}

Функции утилит:

private Chart buildChart()
{
    // Build Chart
    var chart = new Chart();

    // Create chart here
    chart.Titles.Add(CreateTitle());
    chart.Legends.Add(CreateLegend());
    chart.ChartAreas.Add(CreateChartArea());
    chart.Series.Add(CreateSeries());

    return chart;
}

private string getChartImage(Chart chart)
{
    using (var stream = new MemoryStream())
    {
       string img = "<img src='data:image/png;base64,{0}' alt='' usemap='#ImageMap'>";
       chart.SaveImage(stream, ChartImageFormat.Png);
       string encoded = Convert.ToBase64String(stream.ToArray());
       return String.Format(img, encoded);
    }
}

ВИД:

@{ Html.RenderAction("Chart"); }
1 голос
/ 04 февраля 2011

Здесь будет полное решение для CodeProject с использованием ASP.NET MVC 2 и элементов управления диаграммами Microsoft:

Это, вероятно, так же хорошо, как и сейчас (по крайней мере, я не смог найти ничего, что лучше соответствует вашим требованиям), потому что ASP.NET MVC 3 по-прежнему просто RTM и так же является механизмом просмотра бритвы.Во всяком случае, перенести его из ASP.NET MVC 2 в 3 не составляет большого труда.Переключение механизма просмотра на бритву было бы немного большим усилием, но общая концепция осталась прежней.

Я бы сказал, "пойти на это", и когда вы сталкиваетесь с конкретной проблемой или у вас есть вопрос, спросите его здесь.

Обновление

Эта запись в блоге Роберта Мюсига также охватывает эту тему и имеет загружаемое решение.Исходя из вашего комментария, это больше похоже на то, что вы на самом деле хотите достичь:

...