В моем приложении 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();
}
Как диаграмма может получить доступ к данным в частичном представлении?
Есть ли лучший способсделать это?