MVC图表助手-从控制器向视图传递数据

时间:2018-10-25 20:28:25

标签: razor asp.net-mvc-5 mschart

在我的MVC应用程序中,我使用的是剃刀视图内的图表。如果图表放置在Details.cshtml中,则整个屏幕都是图表,因此它必须是局部的。初始数据是通过控制器的Details()方法计算的,我将其传递给ViewBag中的视图。然后,我将ViewBag传递给控制器​​使用Chart()方法。

我无法通过使用ViewBag传递数据来呈现图表。错误是System.ArgumentOutOfRangeExcption: Data points insertion error Number of X values is less than Y values,它告诉我它没有读取ViewBag.m

我已经检查了ViewBag.months是否正在使用Chart()方法。因此ViewBag.m应该变成Chart.cshtml,但是我不能告诉我,因为我什至无法用局部生成任何形式的文本。

控制器...

public ActionResult Details()
{
  ...
  ViewBag.months = new string[] { "Jan", "Feb", "Mar", "Apr", "May" };
  return View(item);
}

 public ActionResult Chart(string[] months)
 {
   ViewBag.m = months;
   return View();
 }

Details.cshtml

...
@RenderChart()

@helper RenderChart()
{
  <div id="chart-content" style="margin-top: 15px">
  <img src="@Url.Action("Chart", "Sales", new { months = ViewBag.months })" />
  </div>
}
...

Chart.cshtml

@{
  var myChart = new Chart(width: 300, height: 200)
    .AddTitle("Sales")
    .AddSeries(
        name: "Months",
        chartType: "Line",
        xValue: ViewBag.m,
        yValues: new[] { "2", "6", "4", "5", "3" })
    .Write();
}

图表如何访问局部视图中的数据?

有更好的方法吗?

0 个答案:

没有答案