在局部视图中的foreach循环中的if内插入一个结束标记

时间:2013-08-19 06:36:53

标签: html asp.net-mvc asp.net-mvc-3 razor

当你看到代码时会更清楚 -

@{
    <ul>
        @foreach (SDNCMS.Models.CountryModel curCountry in Model)
        {
            <li><a href="#" id="@curCountry.Name">@curCountry.Name</a></li>
                if (curCountry.ID % 9 == 0)
                {
                    </ul>
                    <ul> 
                }
            }
    </ul>
}

我收到了这个错误:

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

我试过Html.Raw()

我怎样才能让它发挥作用?

6 个答案:

答案 0 :(得分:2)

使用@:运算符将纯文本输出到页面:

@{
    <ul>
        @foreach (SDNCMS.Models.CountryModel curCountry in Model)
        {
            <li><a href="#" id="@curCountry.Name">@curCountry.Name</a></li>
                if (curCountry.ID % 9 == 0)
                {
                    @:</ul><ul> 
                }
            }
    </ul>
}

答案 1 :(得分:0)

将此@foreach更改为:@{foreach并使用}

关闭此块

答案 2 :(得分:0)

将您的if (curCountry.ID % 9 == 0)更改为@if (curCountry.ID % 9 == 0)

答案 3 :(得分:0)

如果您更改

</ul>
<ul> 

部分是:

@Html.Raw("</ul><ul>")

然后它将输出到页面。您还可能需要在内部之前添加@,以指示新代码块的开始,例如

@if (curCountry.ID % 9 == 0)

答案 4 :(得分:0)

你可以简单地使用它:

<ul>
    @foreach (SDNCMS.Models.CountryModel curCountry in Model)
    {
        <li><a href="#" id="@curCountry.Name">@curCountry.Name</a></li>
        if (curCountry.ID % 9 == 0)
        {
            @Html.Raw("</ul><ul>") 
        }
    }
</ul>

答案 5 :(得分:0)

轻微重新安排代码:

<ul> 
@{
    foreach (SDNCMS.Models.CountryModel curCountry in Model)
    {
        <li><a href="#" id="@curCountry.Name">@curCountry.Name</a></li>
        @if (curCountry.ID % 9 == 0)
        {
            </ul>
            <ul> 
        }
    }
} 
</ul>