ASP MVC5 -使用Url的下钻图表.行动的功能

本文关键字:功能 MVC5 使用 Url ASP | 更新日期: 2023-09-27 18:12:55

我正在ASP MVC5中工作,以创建具有向下钻取功能的图表。从这个页面,我可以得到下面的代码:

下面是创建图像映射和缓存图表的代码:
public ActionResult ChartMap(int? id, string name)
{
    Chart chart = new Chart();
    // Get data for id and add chart area, series, points, etc. to chart
    // Make sure to use Url.Action for any drill-down URLs
    MemoryStream ms = new MemoryStream();
    chart.SaveImage(ms, ChartImageFormat.Png);
    Session["Chart"] = ms.ToArray();
    return Content(chart.GetHtmlImageMap(name));
}

然后呈现缓存图表的代码变成如下:

public ActionResult Chart(int? id)
{
    byte[] data = Session["Chart"] as byte[];
    return File(data, "img/png");
}
下面是视图的代码:
<img src="<%= Url.Action("Chart", new { id = Model.Id }) %>" usemap="#MyMap" />
<% Html.RenderAction("ChartMap", new { id = Model.Id, name = "MyMap" }); %>

一旦我添加了我的数据,这就可以很好地显示图表本身。然而,我很难弄清楚如何使用Url。操作,正如它所说的那样,创建钻取功能。例如,假设在上面代码中的注释块下面,我将数据添加到要显示为条形图的图表中,并按照如下方式设置图表格式:

        chart.Width = 500;
        chart.Height = 500;
        chart.Titles.Add("Test Title");
        chart.ChartAreas.Add(new ChartArea());
        Series series = new Series();
        series.Points.AddXY("ValueA", 3);
        series.Points.AddXY("ValueB", 7);
        series.Points.AddXY("ValueC", 5);
        series.Points.AddXY("ValueD", 4);
        series.Points.AddXY("ValueE", 2);

假设当图形上的一个条被点击时,它应该带用户到/Home/MyTestPage?value=x,其中x是该列的名称(例如ValueA)。虽然这段代码正确地显示为图形,但我无法弄清楚在哪里或如何调用Url。与此相关的操作,以便单击图表路由到适当的页面。如果有人有任何建议,我将不胜感激。谢谢。

ASP MVC5 -使用Url的下钻图表.行动的功能

为了供其他人将来参考,我在这里找到了对上述代码的一些更改,以解决这个问题。主要变化如下:

1)设置chart值时,加一行chart.IsMapEnabled = true;

2)按如下方式创建系列点:

series.Points.Add(new DataPoint {
AxisLabel = "A",
YValues = new double[] {1},
Url = "MyTestPage?value=A");

3)将ChartMap中的return语句替换为以下语句:

return Content("<img src='" + Url.Action("Chart").ToString() + "' usemap='#MyMap'/>" + chart.GetHtmlImageMap("MyMap"));