1

我想知道是否可以使用 c# 将多个图表返回到单个页面/视图?

背景资料

  1. C#, ASP.NET MVC3
  2. DotNet.Highcharts 库

目标:我的总体目标是使用 ASP.NET MVC3 制作一个包含两个图表的网页

例子

HighCharts g1 = new HighCharts("chart");
HighCharts g2 = new HighCharts("chart");
return View(model, g1, g2);

这是我想要的一个例子,但我不太确定这是否可能。如果是这样,我将如何做到这一点?如果可能的话,我将如何使用剃刀输出图表?

非常感谢您的帮助,我很感激!如果问题中有任何误解,请告诉我。

4

2 回答 2

2

如果您只添加两个图表,则不需要列表。只需在您的类中为类型化视图声明:

public class ChartsModel
{
   public Highcharts Chart1 { get; set; }
   public Highcharts Chart2 { get; set; }
}

然后您的视图将@(Model.Chart1) 和@(Model.Chart2) 放在您想要的位置...

重要提示:图表需要不同的名称,因此在您的控制器中,当您创建图表时:

HighCharts g1 = new HighCharts("chart1"){ // Note the names
   // definitions
};
HighCharts g2 = new HighCharts("chart2"){
   // definitions
};

ChartsModel model = new ChartsModel();

model.Chart1 = g1;
model.Chart2 = g2;

return View(model);
于 2013-06-01T18:00:13.720 回答
2

只需创建一个包含 a 的模型List<HighChart>或将其添加到现有模型中)。就像是:

public class ChartsModel
{
    public List<HighChart> Charts { get; set; }
}

然后您可以填充模型并将其发送到您的操作方法中的视图,如下所示:

ChartsModel model = new ChartsModel();
model.Charts = new List<HighChart>();

HighCharts g1 = new HighCharts("chart");
HighCharts g2 = new HighCharts("chart");

model.Charts.Add(g1);
model.Charts.Add(g2);

return View(model);

然后在您的视图中,您可以循环每个图表:

@model ChartsModel

@foreach (HighCharts chart in Model.Charts)
{
    @* do your stuff *@
}
于 2013-05-07T21:30:43.667 回答