【问题标题】:Break script tag to run C# loop中断脚本标记以运行 C# 循环
【发布时间】:2020-09-14 00:24:08
【问题描述】:

我对尝试在 C# 应用程序中实现的跟踪脚本有点卡住了。我需要遍历购物车中的购物篮项目,但我不知道如何打破脚本标签以让 C# 循环处理,以便可以迭代每个项目。下面的示例代码(我在其中添加了 cmets 以使其更清晰):

@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>
}

任何有关如何实现这一目标的指导都将不胜感激。目前,由于语法相似,C# 循环项被错误地呈现为 JS。

谢谢, 标记。

【问题讨论】:

  • 当您需要这样的 cmets 时,是时候认真地重新考虑一下了。这是一个非常强大的指标。
  • 对不起。我应该更直接。这是不好的。别这样了。

标签: javascript c# jquery


【解决方案1】:

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

var products = @Html.Raw(JsonConvert.SerializeObject(Model.BasketItems.Where(i => i.Quantity > 0)));

您也可以在循环中使用&lt;text&gt; 标记,但我不确定 razor html 解析器是否可以完美地与脚本中嵌套的标记配合使用。

if (Model.BasketItems[i].Quantity > 0)
{
    <text>
        ....
    </text>
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    相关资源
    最近更新 更多