多个 if razor 语法

use*_*854 0 c# asp.net-mvc razor

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

            <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>
Run Code Online (Sandbox Code Playgroud)

using 块缺少结束“}”字符。确保此块中的所有“{”字符都有一个匹配的“}”字符,并且没有任何“}”字符被解释为标记。

然后,我尝试...

                <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++;
                            }
                        }
Run Code Online (Sandbox Code Playgroud)

但这给了我...

ass  }if (i % 3 == 1) { 
ass  }if (i % 3 == 1) { 
ass  }if (i % 3 == 1) {
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*att 6

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

例如:

if (i % 3==0)
{ 
    @:<div class="row">
}
Run Code Online (Sandbox Code Playgroud)

或者:

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