我正在使用带有javascript的razor语法在我的代码的两个位置创建一个对象数组。但是,一个是错误,另一个不是。
这是一个没有出错的人:
var tableItems = [
@foreach(var i in items)
{
<text>
{
"ItemID":@i.ItemID,
"ItemName":@i.ItemName,
},
</text>
}
];
以下是渲染时生成的javascript数组:
var tableItems = [
{
"ItemID":123000,
"ItemName":"An Item Name",
},
{
"ItemID":456000,
"ItemName":"Another Item Name"
}, /* comma here doesn't throw error */
];
这是另一个,下面的代码没有显示错误,但呈现的是:
var tableItemsTwo = [
@foreach (var i in items)
{
<text>
{
"ItemID": @i.ItemID,
"ItemName": @i.ItemName,
"Subitems":
@foreach (var s in i.Subitems)
{
<text>
{
"SubitemID":@s.SubitemID,
"SubitemName":@s.SubitemName
},
</text>
}
},
</text>
}
];
抛出错误的渲染数组:
var tableItemsTwo = [
{
"ItemID": 110000,
"ItemName": "Item One",
"Subitems":
{
"SubitemID":100,
"SubitemName":"Subitem One"
},
{ /* Error on this line: "Expected identifier, string or number" */
"SubitemID":200,
"SubitemName":"Subitem Two"
},
{
"SubitemID":300,
"SubitemName":"Subitem Three"
},
}, /* Error on this line: "Syntax error" */
];
如何修复tableItemsTwo
?我正在使用MVC 5.
答案 0 :(得分:1)
您的Subitems
需要[]
,因为它是一系列对象。
尝试:
var tableItemsTwo = [
@foreach (var i in items)
{
<text>
{
"ItemID": @i.ItemID,
"ItemName": @i.ItemName,
"Subitems": [
@foreach (var s in i.Subitems)
{
<text>
{
"SubitemID":@s.SubitemID,
"SubitemName":@s.SubitemName
},
</text>
}
]},
</text>
}
];