百度的都不對,也不是版本升級引起的,即使將版本換成以前的還是一樣報錯。
最后一點一點的貼代碼,發現把后天輸出的數據貼到前端就沒問題,直接使用后台輸出的數據就報錯,最后只好在前端轉兩次
先看后台的輸出部分:在顯示前計算出各部分的值,然后用ViewBag傳到前台。
public async Task<IActionResult> Detail(Guid Id)
{
var model = await _appService.GetById(new EntityDto<Guid>() { Id=Id});
var EndTime = (model.EndTime != null && model.EndTime > DateTime.MinValue) ? model.EndTime : DateTime.Now;
var difference = (EndTime - model.StartTime).TotalHours;
var legend = model.MonitorTypes.Select(t => t.BaseName).ToList();// model.MonitorList.DistinctBy(p => p.TypeName).ToList();
if (model.MonitorList.Count > 0)
{
legend = model.MonitorList.DistinctBy(p => p.TypeName).Select(t => t.TypeName).ToList();
var xAxis = model.MonitorList.DistinctBy(p =>p.CreationTime.ToString(difference > 24 ? "dd HH:mm" : "t")).Select(p=>p.CreationTime.ToString(difference > 24 ? "dd HH:mm" : "t")).ToList();
var yAxis = model.MonitorList.GroupBy(t => t.TypeName).Select(t => new { name = t.Key, type = "line", data = t.Select(p => p.MValue).ToList() });
ViewBag.ChartData = new { legend, xAxis, yAxis };
}
else
ViewBag.ChartData = new { legend, xAxis=new List<string>(), yAxis=new List<string>() };
model.MonitorList = new List<MonitorHistoryListDto>();
ViewBag.modules =model;
return View();
}
前台正常是這樣接收的
var ChartData=@Json.Serialize(ViewBag.ChartData);
然后就可以直接使用,現在在使用前加一句:
var datas = JSON.parse(JSON.stringify(parent.ChartData));
為什么?我也不知道,反正為了這個鬼錯誤,折騰了不下半天了,那個parent是因為小伙伴把圖標的顯示寫在ifram里面的
