Javascript 中断脚本标记以运行C#循环

Javascript 中断脚本标记以运行C#循环,javascript,c#,jquery,Javascript,C#,Jquery,我正试图在C#应用程序中实现一个跟踪脚本,这让我有点为难。我需要循环购物车中的购物篮项目,但我不知道如何打破script标记,让C#loop进程循环,以便每个项目都可以迭代。下面的示例代码(我在中添加了注释,试图使其更清晰): @if(Model!=null) { $(函数(){//启动JAVASCRIPT) log('票证类型:@Model.BasketItems[i].Name'); log('Price:@Model.BasketItems[i].Price'); log('Quantit

我正试图在C#应用程序中实现一个跟踪脚本,这让我有点为难。我需要循环购物车中的购物篮项目,但我不知道如何打破script标记,让C#loop进程循环,以便每个项目都可以迭代。下面的示例代码(我在中添加了注释,试图使其更清晰):

@if(Model!=null)
{
$(函数(){//启动JAVASCRIPT)
log('票证类型:@Model.BasketItems[i].Name');
log('Price:@Model.BasketItems[i].Price');
log('Quantity:@Model.BasketItems[i].Quantity');
数据层推送({
“事件”:“日历签出”,
“电子商务”:{
“细节”:{
'products':[//结束JAVASCRIPT
//启动C#循环
@对于(var i=0;i0)
{
{//中断C#循环
//JAVASCRIPT
'name':'@Model.BasketItems[i].name',
“id”:“,
'价格':'@Model.BasketItems[i].价格',
“品牌”:一些品牌,
“数量”:“@Model.BasketItems[i]。数量”
},
//结束JAVASCRIPT。完成下面的C#循环
}
}
//完成C#环
//启动JAVASCRIPT
]
}
}
});
});//完成JAVASCRIPT
}
如有任何关于如何实现这一目标的指导,将不胜感激。目前,由于类似的语法,C#循环项被错误地呈现为JS

谢谢,
标记。

我将序列化整个json,而不是尝试在循环中生成json

var products=@Html.Raw(JsonConvert.SerializeObject(Model.BasketItems.Where(i=>i.Quantity>0));
您也可以在循环中使用
标记,但我不确定razor html解析器是否能够完美地处理嵌套在脚本中的标记

if(Model.BasketItems[i].数量>0)
{
....
}

当你需要这样的评论时,是时候认真反思了。这是一个很强的指标,对不起。我应该更直接一点。这很糟糕。别再做了。
@if (Model != null)
{
<script>
            $(function () { // START JAVASCRIPT
                console.log('Ticket type: @Model.BasketItems[i].Name');
                console.log('Price: @Model.BasketItems[i].Price');
                console.log('Quantity: @Model.BasketItems[i].Quantity');
                dataLayer.push({
                    'event': 'calendarCheckout',
                    'ecommerce': {
                        'detail': {
                            'products': [ // END JAVASCRIPT
                            // START C# LOOP
                            @for (var i = 0; i < Model.BasketItems.Count; i++)
                            {
                                if (Model.BasketItems[i].Quantity > 0)
                                {
                                    { // BREAK C# LOOP
                                    // JAVASCRIPT
                                        'name': '@Model.BasketItems[i].Name',
                                        'id': '',
                                        'price': '@Model.BasketItems[i].Price',
                                        'brand': 'Some Brand',
                                        'quantity': '@Model.BasketItems[i].Quantity'
                                    },
                                    // END JAVASCRIPT. FINISH C# LOOP BELOW

                                }
                            }
                            // FINISH C# LOOP
                            // START JAVASCRIPT
                            ]
                        }
                    }
                });
            });// FINISH JAVASCRIPT
</script>
}