Итак, я хочу вывести json из моего контроллера, который chart.js может прочитать, а затем отобразить в виде графика.
мой запрос в контроллере возвращает два столбца (я использую dapper). 1-й будет на оси X, а следующий на оси Y. Это просто гистограмма.
Я считаю, что для chart.js нужны два массива, по одному для каждой оси.
что-то вроде.
x [значения оси x]
y [значения оси y]
Как вывести json, который может прочитать chart.js? Нужно ли для этого создать модель представления или это можно сделать прямо внутри контроллера?
Я знаю, что если я создам модель представления, а затем передам ее в виде списка, она выведет модель в виде объекта json, но, как я уже сказал, это не совсем тот формат chart.js, который ожидает.
Контроллер:
public JsonResult count()
{
List<string> indexList = new List<string>();
try
{
using (IDbConnection db = new g))
{
indexList = db.Query<> blablbka
}
return Json(indexList, JsonRequestBehavior.AllowGet);
}
catch (Exception)
{
throw;
}
}
Пример диаграммы.js
метки и данные поступают из базы данных через этот запрос. метка - это год, а данные - количество событий для каждого конкретного года.
<canvas id="myChart" width="400" height="400"></canvas>
<script>
var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["2010", "2011", "2012", "2013", "2014", "2015"],
datasets: [{
label: '# of Votes',
data: [20,10,9,8,5,2],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
</script>
Спасибо за вашу помощь.