多个如果剃刀语法

时间:2015-01-27 14:00:49

标签: c# asp.net-mvc razor

需要您对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>
  

使用块缺少结束“}”字符。确保你   为此中的所有“{”字符添加匹配的“}”字符   阻止,并且没有任何“}”字符被解释为   标记。

然后,我试过......

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

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

2 个答案:

答案 0 :(得分:4)

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

例如:

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

或者:

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

答案 1 :(得分:0)

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