Преобразование списка C# в массив javascript - PullRequest
0 голосов
/ 14 января 2020

У меня есть SelectList из моего C# метода контроллера, который содержит 8 пар текст / значение. Я хотел бы преобразовать это в массив JavaScript, к которому я могу получить доступ в столбце foreignKey сетки кендо. Структура моего arObjArray в порядке, как и ожидалось. Единственная проблема заключается в неправильном содержании массива. Вместо того, чтобы список из 8 пар соответствовал элементу packageList, я получаю массив из 8 строк, каждая из которых имеет то же значение, что и самый последний элемент в packageList. Соответствующий раздел моей функции javascript выглядит следующим образом:

var arObjArray = [];
var arObj = {};

@foreach (SelectListItem d in packageList)
{
    @:arObj["text"] = "@d.Text";
    @:arObj["value"] = Number("@d.Value");

    @:arObjArray.push(arObj);
}
console.log(arObjArray)

Что мне здесь не хватает?

1 Ответ

1 голос
/ 14 января 2020

Объекты передаются по ссылке , так же, как экземпляры в C#. В вашем foreach l oop вы на самом деле повторно используете один и тот же объект снова и снова, потому что он назначается пустому объекту только один раз (var arObj = {}; за пределами l oop). Таким образом, вы помещаете один объект в массив несколько раз и изменяете значения этого одного объекта на каждой итерации массива.

Вместо этого объявляйте и присваивайте arObj внутри l oop :

@foreach (SelectListItem d in packageList)
{
    var arObj = {};
    @:arObj["text"] = "@d.Text";
    @:arObj["value"] = Number("@d.Value");

    @:arObjArray.push(arObj);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...