多个 if 剃刀语法

Multiple if razor syntax

需要您对下面的剃刀语法的帮助,因为它会抛出错误...

            <div class="container">
                        @{var i = 0;}
                        @foreach (var m in Tests)
                        {
                            if (i%3==0)
                            { 
                                <div class="row">
                            }

                            <div class="col-md-3">ass</div>

                            @if (i % 3 == 1)
                            {
                                </div>
                            }
                            @{i++;}
                        }

                </div>

The using block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

然后,我尝试...

                <div class="container">
                        @{
                            var i = 0;
                            foreach (var m in Tests)
                            {
                                if (i%3==0)
                                { 
                                    <div class="row">
                                }

                                <div class="col-md-3">ass</div>

                                if (i % 3 == 1)
                                {
                                    </div>
                                }
                                i++;
                            }
                        }

但这给了我...

ass  }if (i % 3 == 1) { 
ass  }if (i % 3 == 1) { 
ass  }if (i % 3 == 1) {

感谢帮助更正我的代码...

Razor 无法正确匹配位于单独代码块中的开始和结束标记,因此无法正确解析视图。如果你需要做这样的事情,你要么需要在标签前加上 @: 以告诉 Razor 忽略该行的解析标签,要么将它们包装在 @Html.Raw:

例如:

if (i % 3==0)
{ 
    @:<div class="row">
}

或者:

if (i % 3==0)
{ 
    @Html.Raw("<div class='row'>")
}

您应该从这个 @if (i % 3 == 1) 和这个 @{i++;} 中删除 @。这两个表达式都已经在代码块中:@foreach (var m in Tests)。因此你不需要这个 @.