MVC: перебор массива Viewbag в javascript - PullRequest
14 голосов
/ 29 апреля 2011

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

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

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

Ответы [ 3 ]

41 голосов
/ 29 апреля 2011

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

var array = @Html.Raw(Json.Encode(@ViewBag.Array));
for(var i = 0; i < array.length; i++) {
    jScriptArray[i] = array[i];
}
0 голосов
/ 02 февраля 2015
<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";
0 голосов
/ 29 апреля 2011

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

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

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

...