我有以下用于创建对象的JS代码:
var TransactionData = {
orderId: '@Model.Order.SalesOrderNumber.SelfOrDefault().FullOrderNuber',
curreny: "USD",
total: '@Model.Order.TotalSalesPrice',
items: [
{
@foreach (var item in Model.Order.LineItems)
{
sku: item.ProductId,
quantity: item.Quantity,
price: item.AdjustedUnitPrice
}
}]
}
我需要遍历模型中的LineItems来获取sku,数量和价格。需要创建1到x个项目。使用上面的代码我在sku:,quantity:和price:行中的逗号之后得到错误“; expected”。最终,我试图在项目中获得以下内容:
{
"price" : "140",
"quantity" : "1",
"sku" : "156278"
},
{
"price" : "12.69",
"quantity" : "3",
"sku" : "908736"
}
我想我几乎就在那里我只需要解决这个错误。有什么建议?我在RA上的JS上生锈了,所以请耐心等待。
感谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
这完全被解释为服务器端代码:
@foreach (var item in Model.Order.LineItems)
{
sku: item.ProductId,
quantity: item.Quantity,
price: item.AdjustedUnitPrice
}
当然,这是一个语法错误,因为这三行不是有效的C#。相反,您希望将这些作为客户端代码处理,并将一些服务器端值发送到输出。像这样:
@foreach (var item in Model.Order.LineItems)
{
<text>
{
sku: @item.ProductId,
quantity: @item.Quantity,
price: @item.AdjustedUnitPrice
},
</text>
}
尽管如此,您在Razor代码中构建JavaScript结构的手动工作越多,您开始证明仅仅序列化结构的次数就越多。 This question是一个很好的开始。当然,您可以使用任何您喜欢的序列化器。
答案 2 :(得分:0)
这是我最终的结果:
var items = [
@foreach (var item in Model.Order.LineItems)
{
<text>
{
sku: '@item.Product.SKU',
quantity: '@item.Quantity',
price: '@item.AdjustedUnitPrice',
name: '@item.Product.Description.Name'
},
</text>
}
];
这将创建项目数组,然后使用:
items: items
设置数组并且有效。
谢谢大家。