chart.GetHtmlImageMap не работает должным образом - PullRequest
1 голос
/ 13 декабря 2011

уборная,

Мне нужна помощь в создании карты изображений для диаграмм моего веб-приложения. Прочитав много ресурсов, здесь и в Интернете, я столкнулся со следующей проблемой:

Проблема: На мой взгляд, я звоню @ Html.Action (RenderMyMap), который отображает тег

с координатами атрибута = 0,0,0,0.

Что я делаю: Мой проект организован так:

-Core.cs: класс, отвечающий за создание объектов System.Web.UI.DataVisualization.Charting.Chart; -ClientController: в существующем объекте Chart я сохраняю его с помощью Chat.SaveImage (memoryStream, format), сохраняю его в переменной сеанса в виде байтового массива и возвращаю объект ContentResult, как при возврате Content (chart.GetHtmlImageMap ( )); -ClientController: после этого я использую переменную сеанса для фактического рендеринга диаграммы, как в возвращаемом файле (chartByteArray, "image / png"); -Index.cshtml: наконец, на мой взгляд, я вызываю метод на ClientController для рендеринга карты и диаграммы.

Моя настройка: .NET 4.0, MVC3, SQL Server 2008.

Bellw отправляет код одного из моих методов на ClientController для генерации и возврата n ImageMap.

    public ActionResult ChartMapGetClientsByType()
    {
        System.Web.UI.DataVisualization.Charting.Chart chart = null;
        if (Session["GraficoClientePorTipo"] != null)
        {
            chart = (System.Web.UI.DataVisualization.Charting.Chart)Session["GraficoClientePorTipo"];
            Session.Remove("GraficoClientePorTipo");
        }
        else
        {
            chart = MeuMRP.Core.Chart.CreateChartImageMap("GraficoClientePorTipo", SeriesChartType.Pie);
            chart.IsMapEnabled = true;
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            chart.SaveImage(ms, ChartImageFormat.Png);
            Session["GraficoClientePorTipo"] = ms.ToArray();
        }
        return Content(chart.GetHtmlImageMap("GraficoClientePorTipo"));
    }

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Вы должны установить свойство Url для объекта Chart.Series. Например:

chart.Series[0].Url = "#";
0 голосов
/ 04 июля 2013

Эта ошибка возникла у меня на сложном графике с набором BoxPlots. Для простой диаграммы Points ошибки не было, <map> в порядке с координатами и атрибутами.

Чтобы сгенерировать координаты области карты, необходимо добавить всплывающую подсказку или URL-адрес или атрибуты MapAreaAttributes: например,

series.Points[idx].ToolTip = tooltip;

или

series.Points[idx].MapAreaAttributes = "onmouseover=\"DisplayTooltip('" + tooltip +"');\" onmouseout=\"DisplayTooltip('');\"";

Но я нашел ToolTip как бесполезный , потому что он ничего не добавил к <area> в <map>, кроме для координат (что я делаю не так?). Я не проверял назначение URL-адреса, предполагая, что это работает, как утверждается в другом ответе.

Добавление указателя мыши и указателя мыши MapAreaAttributes работает очень хорошо, что приводит к следующему:

<area onmouseover="DisplayTooltip('99');" onmouseout="DisplayTooltip('');" shape="rect" coords="98,44,103,49" alt="">

FYI. Вы можете найти более подробную информацию о настройке Web.UI Charting в MVC по различным URI, включая http://www.codeproject.com/Articles/297677/Using-ASP-Net-Charting-with-Image-Map-in-MVC http://geekswithblogs.net/DougLampe/archive/2011/01/23/charts-in-asp.net-mvc-2-with-drill-down.aspx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...