Razor MVC Populating Javascript array with Model Array Razor MVC Populating Javascript array with Model Array javascript javascript

Razor MVC Populating Javascript array with Model Array


This is possible, you just need to loop through the razor collection

<script type="text/javascript">    var myArray = [];    @foreach (var d in Model.data)    {        @:myArray.push("@d");    }    alert(myArray);</script>

Hope this helps


I was working with a list of toasts (alert messages), List<Alert> from C# and needed it as JavaScript array for Toastr in a partial view (.cshtml file). The JavaScript code below is what worked for me:

var toasts = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(alerts));toasts.forEach(function (entry) {    var command = entry.AlertStyle;    var message = entry.Message;    if (command === "danger") { command = "error"; }    toastr[command](message);});


JSON syntax is pretty much the JavaScript syntax for coding your object. Therefore, in terms of conciseness and speed, your own answer is the best bet.

I use this approach when populating dropdown lists in my KnockoutJS model. E.g.

var desktopGrpViewModel = {    availableComputeOfferings: ko.observableArray(@Html.Raw(JsonConvert.SerializeObject(ViewBag.ComputeOfferings))),    desktopGrpComputeOfferingSelected: ko.observable(),};ko.applyBindings(desktopGrpViewModel);

...

<select name="ComputeOffering" class="form-control valid" id="ComputeOffering" data-val="true" data-bind="options: availableComputeOffering,           optionsText: 'Name',           optionsValue: 'Id',           value: desktopGrpComputeOfferingSelect,           optionsCaption: 'Choose...'"></select>

Note that I'm using Json.NET NuGet package for serialization and the ViewBag to pass data.