Я пытаюсь загрузить массив JavaScript с массивом из моей модели. Мне кажется, это должно быть возможно.
Ни один из приведенных ниже способов не работает.
Невозможно создать цикл JavaScript и выполнить приращение через массив модели с переменной JavaScript
for(var j=0; j<255; j++)
{
jsArray = (@(Model.data[j])));
}
Не удается создать цикл Razor, JavaScript выходит за рамки
@foreach(var d in Model.data)
{
jsArray = d;
}
Я могу заставить его работать с
var jsdata = @Html.Raw(Json.Encode(Model.data));
Но я не знаю, зачем мне использовать JSON.
Также, пока я ограничиваю это 255 байтами. В будущем он может набрать много МБ.
javascript
arrays
asp.net-mvc
asp.net-mvc-4
razor
Том Мартин
источник
источник
Ответы:
Это возможно, вам просто нужно пройтись по коллекции бритвы
Надеюсь это поможет
источник
@d
объявляется внутри цикла foreach. Обратите внимание, что перед d стоит термин VAR. Это позволяет использовать его внутри цикла foreachСинтаксис JSON в значительной степени является синтаксисом JavaScript для кодирования вашего объекта . Поэтому с точки зрения краткости и скорости ваш собственный ответ - лучший выбор.
Я использую этот подход при заполнении раскрывающихся списков в моей модели KnockoutJS . Например
...
Обратите внимание, что я использую пакет NuGet Json.NET для сериализации и ViewBag для передачи данных.
источник
Я работал со списком тостов (предупреждающих сообщений)
List<Alert>
из C # и нуждался в нем как массив JavaScript для Toastr в частичном представлении (.cshtml
файле). Приведенный ниже код JavaScript сработал для меня:источник
Я интегрировал слайдер и мне нужно было получить все файлы в папке, и у меня была такая же ситуация: массив C # с массивом javascript. Это решение от @heymega работало отлично, за исключением того, что мой парсер javascript раздражал при
var
использовании вforeach
цикле. Поэтому я немного поработал, чтобы избежать петли.И код javascript
Надеюсь, поможет
источник
Чтобы развернуть ответ, получивший наибольшее количество голосов, для справки, если вы хотите добавить более сложные элементы в массив:
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
и т.п.
Кроме того, если вы хотите передать массив в качестве параметра своему контроллеру, вы можете сначала преобразовать его в строку:
myArray = JSON.stringify({ 'myArray': myArray });
источник
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
Это был бы лучший подход, поскольку я реализовал :)
Надеюсь, это поможет вам предотвратить повторение модели (счастливое кодирование)
источник
Если это симметричный (прямоугольный) массив, попробуйте вставить его в одномерный массив javascript; используйте бритву для определения структуры массива; а затем преобразовать в двумерный массив.
источник