Здравствуйте, я пытаюсь сделать график, при этом данные брались бы с модели (дата и кол-во очков), которая была создана по принципу CodeFirst.
Вот модель
using System;
namespace PersonalArea.DAL.Models
{
public class Result
{
public string Id { get; set; }
public string PatientId { get; set; }
public string GameName { get; set; }
public string Time { get; set; }
public int Score { get; set; }
public int Level { get; set; }
public DateTime FirstEnter { get; set; }
public DateTime DateEnter { get; set; }
public DateTime DateExit { get; set; }
public string DifficultLevel { get; set; }
public virtual Patient Patient { get; set; }
}
}
Вот контроллер
[HttpGet]
public async Task<IActionResult> Results(string id)
{
if (string.IsNullOrEmpty(id))
{
return NotFound();
}
Patient patient = await _userManager.FindByIdAsync(id) as Patient;
if (patient == null)
{
return NotFound();
}
List<IGrouping<string, Result>> results = _context.Results.Where(x => x.PatientId == id).GroupBy(z => z.GameName).ToList();
ViewBag.Test = JsonConvert.SerializeObject(results);
return View(results);
}
Вот сама вьюха, где я хочу видеть графики
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<div id="chartContainer" style="height: 400px;"></div>
<script type="text/javascript">
window.onload = function ()
{
var test = @Html.Raw(ViewBag.test);
var datapoints = [];
for (var i = 0; i < test.length; i++) {
datapoints.push({ y: test[i].Score, x: test[i].ID, label: test[i].GameName });
}
window.onload = function () {
var chart = new CanvasJS.Chart("chartContainer", {
theme: "theme2",
animationEnabled: true,
title: {
text: "Simple Column Chart in ASP.NET MVC"
},
subtitles: [
{ text: "Try Resizing the Browser" }
],
data: [
{
type: "column", //change type to bar, line, area, pie, etc
dataPoints: datapoints
/*[
{ x: 10, y: 71 },
{ x: 20, y: 55 },
{ x: 30, y: 50 },
{ x: 40, y: 65 },
{ x: 50, y: 95 },
{ x: 60, y: 68 },
{ x: 70, y: 28 },
{ x: 80, y: 34 },
{ x: 90, y: 14 }
]*/
//Uncomment below line to add data coming from the controller.
//dataPoints: @Html.Raw(ViewBag.DataPoints),
}
]
});
chart.render();
};
}
Но система выкидывает ошибку
An unhandled exception occurred while processing the request.
JsonSerializationException: Self referencing loop detected with type 'PersonalArea.DAL.Models.Result'. Path '[0][0].patient.results'.
И ссылается на строку в контроллере
ViewBag.Test = JsonConvert.SerializeObject(results);
Скажите пожалуйста, в чём проблема и как это можно решить?
Я как понимаю, дело в том, что мой класс не может экспортироваться в Json. Может ли быть из-за того, что класс, который компилируется в другом классе является ссылкой. Ведь каждый результат прекреплён с пациенту.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Даны три числаНайдите их среднее арифметическое