Попытка доступа к контроллеру в JavaScript - PullRequest
0 голосов
/ 07 апреля 2020

Моя конечная цель - использовать информацию из моей базы данных для создания линейного графика с использованием моего приложения MVC. До сих пор мне удалось собрать эти данные, используя модель представления и запросы LINQ в моем контроллере, и я убедился, что данные точны, запустив тест в представлении. Однако мне трудно понять, как включить его в мой файл JavaScript. В моем контроллере у меня есть функция

private DataBase db = new DataBase();
public ActionResult GetInfo() {
    var model = new UserViewModel();
    model.val1=db.table.Where(n=>n.UserID==curUser).Select(n=>n.SomeData).ToArray();
    model.val2=db.table.Where(n=>n.UserID==curUser).Select(n=>n.MoreData).ToArray();
    model.dictionary = the stuff from above;

А затем в моем файле JavaScript я использую Chart. Js для построения диаграммы. Пока у него есть только поддельные данные, чтобы убедиться, что все было правильно связано, но это выглядит так:

jQuery(document).ready(function() {
    var chart=new CanvasJS.Chart("moodgraph",{
        animationEnabled: false,
        theme: "light2",
        title: {
            text: "Simple Line Chart"
        },
        axisY: {
            includeZero: false
        },
        data: [{
            type: "line",
            indexLabelFontSize: 16,
            dataPoints: [

                { x: 1,y: 450 },
                { y: 414 },
                { y: 520,indexLabel: "\u2191 highest",markerColor: "red",markerType: "triangle" },
                { y: 460 },
                { y: 450 },
                { y: 500 },
                { y: 480 },
                { y: 480 },
                { y: 410,indexLabel: "\u2193 lowest",markerColor: "DarkSlateGrey",markerType: "cross" },
                { y: 500 },
                { y: 480 },
                { y: 510 }
            ]
        }]
    });
    chart.render();

});

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

var model=@Model.Dictionary

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

Как получить доступ к данным модели представления в моем отдельном файле JavaScript?

1 Ответ

0 голосов
/ 07 апреля 2020

вы можете использовать это:

1 - В вашем контроллере:

*
*
ViewBag.Dico = model.dictionary;
return View("chartPage");

2 - в вашем chartPage.cs html (или объявить вашу переменную глобально 'Layout.cs html '):

<script> 
   var myPoints= @Html.Raw(Json.Encode(ViewBag.Dico));
</script>

3 - на графике Js:

jQuery(document).ready(function() {
        var chart=new CanvasJS.Chart("moodgraph",{
        *
        *
        *
        },
        data: [{
            type: "line",
            indexLabelFontSize: 16,
            dataPoints: (typeof(myPoints) != "undefined" ? myPoints: [])
        }]
    });
    chart.render();

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