Skip to content Skip to sidebar Skip to footer

Trying To Access Controller In Javascript

My ultimate goal is to use information from my database to create a line graph using my MVC application. So far I have managed to gather this data using a view model and LINQ queri

Solution 1:

you can use this :

1 - In your controller :

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

2 - in your chartPage.cshtml (or declare your variable globally 'Layout.cshtml'):

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

3 - in ChartJs:

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

});

Solution 2:

using Chart.JS library you can make dynamic charts from the database data by following the next steps

Model: suppose you have model for graph data as following:

publicclassJsResultChart
    {
        publicstring Name { get; set; }
        publicdouble Value { get; set; } 
    }

Controller:

return your data from the controller (using model, viewbag..etc) as list

var JsResultChart= new List<JsResultChart> 
{
new JsResultChart{ Name ="first", Value = 100 }, //data will be fetched from dbnew JsResultChart{ Name ="second", Value = 200 },
};
Model.JsResultChart = JsResultChart;

View: add something like this:

<div class="row">
    <div class="col-md-12">
        <input type="hidden"id="Lables" name="Lables" value="@Json.Encode(Model.ChartData.Select(x => x.Name).ToList())" />
        <input type="hidden"id="Values" name="Values" value="@Json.Encode(Model.ChartData.Select(x => x.Value).ToList())">
        <canvas id="myChart" style="margin: 0 auto;" class="NotPrintable"></canvas>
        <div id="ResultsDiv"></div>
    </div>
</div>

javascript:

varNames = $("#Lavels").val();
varNumbers = $("#Values").val();
Names = JSON.parse(Names);
Numbers = JSON.parse(Numbers);
       
var data = {
    labels: Names,
    datasets: [{
        fill: false,
        data: Numbers,
        label: "Value"//you can write(label: Names) rather than (label: "Value")
    }]
};

var ctx = $("#myChart");
var barChart = newChart(ctx, {
    type: 'line',
    data: data,
    options: options //add your options
});

Post a Comment for "Trying To Access Controller In Javascript"