Это мой первый раз, когда я использую Google Charts, в конечном итоге я хочу продемонстрировать данные, хранящиеся в моей модели PollAnswers для конкретного опроса. В настоящее время я пытаюсь использовать JQuery, но безрезультатно, так как раньше я мог только продемонстрировать все данные, хранящиеся в модели, а не выбранные фрагменты, которые мне нужны.
Сценарий в разметке моего представления:
function drawPieChart() {
// Create the data table.
var data = new google.visualization.DataTable();
data.addColumn('string', '@Model.Answers.Where(p => Convert.ToBoolean(p.Answer))');
data.addColumn('number', '@Model.Answers.Where(p => Convert.ToBoolean(p.AnsCount))');
// JQuery to call Controller
$.getJSON("@Url.Action("GetChart")", null, function (chartData) {
$.each(chartData, function (i, item) {
data.addRow([item.Answers, item.AnsCount]);
});
// Set chart options
var options = {
title: 'Answers and Number of Votes',
hAxis: { title: '@Model.Poll.PollTitle)', titleTextStyle: { color: 'red' } }
};
// Instantiate and draw our chart, passing in some options
var chart = new google.visualization.PieChart(document.getElementById('PieChart_div'));
chart.draw(data, options);
});
}
Метод моего контроллера:
public ActionResult GetChart(int id)
{
return Json(db.Answers.Where(p => p.AnswerId == id).Select(p => new { p.Answer, p.AnsCount }),
JsonRequestBehavior.AllowGet);
}
Я полагаю, что мне может понадобиться отправить идентификатор опроса в контроллер, чтобы он не возвращает все ответы, которые хранятся в модели, но я не уверен, как получить это из модели, поместить его в сценарий и отправить в контроллер.