Как использовать данные модели для Google Charts в MVC Project? - PullRequest
0 голосов
/ 22 апреля 2020

Это мой первый раз, когда я использую 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);
        } 

Я полагаю, что мне может понадобиться отправить идентификатор опроса в контроллер, чтобы он не возвращает все ответы, которые хранятся в модели, но я не уверен, как получить это из модели, поместить его в сценарий и отправить в контроллер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...