在我的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();
}
图表如何访问局部视图中的数据?
有更好的方法吗?