图表.GetHtmlImageMap 无法按预期工作
本文关键字:工作 GetHtmlImageMap 图表 | 更新日期: 2023-09-27 18:17:47
Gents,
我需要帮助才能创建到 Web 应用图表的图像映射。在阅读了许多资源后,在这里和网络上,我最终遇到了以下问题:
问题: 在我看来,我称之为@Html.Action(RenderMyMap(,它渲染了一个
我在做什么:我的项目是这样组织的:
-Core.cs:负责创建System.Web.UI.DataVisualization.Charting.Chart对象的类; -ClientController:对于现有的图表对象,我使用 Chat.SaveImage(memoryStream,格式(保存它,将其作为字节数组存储在会话变量中,并返回一个 ContentResult 对象,就像返回 Content(chart.GetHtmlImageMap(((; -客户端控制器:之后,我使用会话变量实际渲染图表,例如返回文件(chartByteArray,"image/png"(; -Index.cshtml:最后,在我看来,我正在客户端控制器上调用方法来呈现地图和图表。
我的设置:.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"));
}
我做错了什么?
Url
属性设置为Chart.Series
对象。例如:
chart.Series[0].Url = "#";
这个错误在带有一组箱形图的复杂图表上导致我。对于简单的点图,没有错误,<map>
坐标和属性很好。
为了生成地图区域坐标,您需要添加工具提示或URL或地图区域属性:例如
series.Points[idx].ToolTip = tooltip;
或
series.Points[idx].MapAreaAttributes = "onmouseover='"DisplayTooltip('" + tooltip +"');'" onmouseout='"DisplayTooltip('');'"";
但是我发现工具提示毫无用处,因为它除了坐标之外没有向<map>
中的<area>
添加任何内容(我做错了什么?我没有测试分配 URL,假设它像另一个答案中断言的那样工作。
添加鼠标悬停和鼠标退出地图区域属性工作得很好,导致:
<area onmouseover="DisplayTooltip('99');" onmouseout="DisplayTooltip('');" shape="rect" coords="98,44,103,49" alt="">
仅供参考,您可以在各种URI中找到有关在MVC中设置Web.UI图表的更多详细信息,包括http://www.codeproject.com/Articles/297677/Using-ASP-Net-Charting-with-Image-Map-in-MVChttp://geekswithblogs.net/DougLampe/archive/2011/01/23/charts-in-asp.net-mvc-2-with-drill-down.aspx。