C# 多重if-razor语法

C# 多重if-razor语法,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,需要你的帮助在剃须刀语法下面,因为它是抛出错误 <div class="container"> @{var i = 0;} @foreach (var m in Tests) { if (i%3==0) {

需要你的帮助在剃须刀语法下面,因为它是抛出错误

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

非常感谢您帮助我更正代码…

Razor无法正确匹配开头和结尾标记(如果它们位于单独的代码块中),因此无法正确解析视图。如果您需要这样做,您需要在标记前面加上
@:
来告诉Razor忽略该行的解析标记,或者将它们包装在
@Html.Raw
:

例如:

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

if(i%3==0)
{ 
@Html.Raw(“”)
}

如果打开和关闭标记位于单独的代码块中,Razor无法正确匹配它们,因此无法正确解析视图。如果您需要这样做,您需要在标记前面加上
@:
来告诉Razor忽略该行的解析标记,或者将它们包装在
@Html.Raw
:

例如:

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

if(i%3==0)
{ 
@Html.Raw(“”)
}

如果(i%3==1)和此
{i++;}
,则应从此
@中删除
@
。这两个表达式都已在:
@foreach(测试中的var m)
的代码块中。因此,如果(i%3==1)
和此
{i++;}
,则不需要此

您应该从此
@中删除
@
。这两个表达式都已在:
@foreach(测试中的var m)
的代码块中。因此,您不需要这个
@

看起来您应该在第一个
前面有
@
,如果
@mrtig:no。它位于代码块(
foreach
)的顶层,没有包装在HTML标记中。因此,如果在Razor前面加上
@
,它实际上会窒息。虽然,我总是觉得这很可笑,好像Razor知道我把
@
放在了不需要的地方,它应该可以默默地忽略它。看起来你应该在第一个
前面放
@
,如果
@mrtig:no。它位于代码块(
foreach
)的顶层,没有包装在HTML标记中。因此,如果在Razor前面加上
@
,它实际上会窒息。不过,我总是觉得这很可笑,好像Razor知道的足够多,它可以告诉我,我把一个
@
放在了不需要的地方,它应该能够默默地忽略它。
if (i % 3==0)
{ 
    @:<div class="row">
}
if (i % 3==0)
{ 
    @Html.Raw("<div class='row'>")
}