我的 C# Controller 方法有一个 SelectList,其中包含 8 个文本/值对。我想将其转换为 JavaScript 数组,我可以在剑道网格的foreignKey 列中访问该数组。我的 arObjArray 的结构符合预期。唯一的问题是数组的内容是错误的。我没有得到与 packageList 项一致的 8 对列表,而是得到了一个 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)
我在这里缺少什么?
最佳答案
对象通过引用传递,与 C# 中的实例相同。在 foreach 循环中,您实际上一遍又一遍地重用同一个对象,因为它只分配给一个空对象一次(var arObj = {};
在循环外部)。因此,您多次将一个对象推送到数组,并在每次数组迭代时修改该对象的值。
在循环内声明并分配arObj
:
@foreach (SelectListItem d in packageList)
{
var arObj = {};
@:arObj["text"] = "@d.Text";
@:arObj["value"] = Number("@d.Value");
@:arObjArray.push(arObj);
}
关于javascript - 将 C# 列表转换为 javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59724551/