MVC: Итерирование массива Viewbag в javascript

Цель состоит в том, чтобы получить данные из ViewBag.Array в массив Javascript. Данные вычисляются в контроллере, поэтому я не могу получить его прямо из базы данных. Мне нужны данные для рисования диаграммы с помощью jqplot. Код:

for(i = 0; i < @ViewBag.Array.Length; i++)
{
    jScriptArray[i] = @ViewBag.Array[i];
}

Проблема заключается в том, что "i" не существует в текущем контексте "в @ViewBag.Array[i], но не имеет проблем в jScriptArray[i]. Любая помощь приветствуется.

Ответы

Ответ 1

Вы можете попробовать следующее:

var array = @Html.Raw(Json.Encode(@ViewBag.Array));
for(var i = 0; i < array.length; i++) {
    jScriptArray[i] = array[i];
}

Ответ 2

<script>
var jScriptArray=[];
@{
    for(i = 0; i < ViewBag.Array.Length; i++){
      <text>jScriptArray[@i] = "@ViewBag.Array[@i]";</text>
      i++;
    }
  }
</script>

В html файле вы получите что-то вроде этого:

jScriptArray[0] = "ArrayValue0";
jScriptArray[1] = "ArrayValue1";
jScriptArray[2] = "ArrayValue2";

Ответ 3

Лучший способ достичь вашей цели - создать контроллер JSON, который возвращает данные в массив JSON.

С вашего javascript вы можете запросить данные, а затем обработать их.

Надеюсь, что это поможет