主視圖:
@Html.Partial("SeriesChartPartial", ViewBag.deviceEveyDayActivity as List<SeriesChartVM>)
分布視圖:
@using Magmoud.Web.ViewModels@model List<SeriesChartVM>@(Html.Telerik().Chart(Model).Legend(false).Name("SingleChart") .Series(series => { if (ViewBag.IOSSelect == "true") { series.Line(s => s.IOSCount).Color(UISetting.IOSCOLOR); } if (ViewBag.AndroidSelect == "true") { series.Line(s => s.AndroidCount).Color(UISetting.ANDROIDCOLOR); } if (ViewBag.WindowsSelect == "true") { series.Line(s => s.WindowsCount).Color(UISetting.WINDOWSCOLOR); } }).CategoryAxis(axis => axis .Categories(s => s.XData) ) .ValueAxis(axis => axis .Numeric()).Tooltip(true))
這樣是沒問題的。
但是如果改變主視圖,嘗試使用html.partial的第三個重載:
@Html.Partial("SeriesChartPartial", ViewBag.deviceEveyDayActivity as List<SeriesChartVM>, new ViewDataDictionary { { "chartType", ViewBag.deviceEveyDayActivityChartType as string }, })
VS沒有報異常,但分部視圖就無法渲染了。猜測是ViewBag.IOSSelect等沒有資料,於是將主視圖改為:
@Html.Partial("SeriesChartPartial", ViewBag.singleViewDuration as List<SeriesChartVM>, new ViewDataDictionary { { "iosSelect", ViewBag.iosSelect }, { "androidSelect", ViewBag.androidSelect }, { "windowsSelect", ViewBag.windowsSelect } })
分部視圖改為:
@using Magmoud.Web.ViewModels@model List<SeriesChartVM>@(Html.Telerik().Chart(Model).Legend(false).Name(ViewData["name"] as string) .Series(series => { if (ViewData["iosSelect"] as string == "true") { series.Line(s => s.IOSCount).Color(UISetting.IOSCOLOR); } if (ViewData["androidSelect"] as string == "true") { series.Line(s => s.AndroidCount).Color(UISetting.ANDROIDCOLOR); } if (ViewData["windowsSelect"] as string == "true") { series.Line(s => s.WindowsCount).Color(UISetting.WINDOWSCOLOR); } }).CategoryAxis(axis => axis .Categories(s => s.XData) ) .ValueAxis(axis => axis .Numeric()).Tooltip(true))
就運行正常了。原因不知。