如何在没有剃刀的情况下结束Razor中的标签抱怨没有开始标记

时间:2016-08-11 10:32:03

标签: c# html asp.net-mvc razor

我收到了这段代码:

@foreach (var team in Model.GetTeams)
{
    var i = 0;
    foreach (var employee in team.Medewerkers)
    {
        if (i == 0)
        {
            @:<li class="flip-card">
                @:<div class="flip-card-back">
                @:</div>
                i=1;                                    
        } 
        else
        {
                @:<div class="flip-card-front">
                @:</div>
            @:</li>
            i = 0;
        } 
    }
    if (i == 1)
    {
        </li>
    }
}

现在团队中可能有3名员工,因此li标签永远不会关闭。所以我想我会在最后添加一个if语句来检查i == 1是否可以关闭li标签但是当我使用这个代码时,Razor抱怨我关闭了一个永远不会启动的标签。

我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

看起来您想要在每两名员工之后关闭<li class="flip-card">,或者在员工人数为奇数时关闭最后一名员工。例如,当有2名员工时,您需要此输出

<li class="flip-card">
    <div class="flip-card-back">
    </div>
    <div class="flip-card-front">
    </div>
</li>

如果有3名员工,您希望获得此输出

<li class="flip-card">
    <div class="flip-card-back">
    </div>
    <div class="flip-card-front">
    </div>
</li>
<li class="flip-card">
    <div class="flip-card-back">
    </div>
</li>    

我建议您不要将i的值更改为01,而是将i的值加1并使用% operator检查i的当前值是奇数还是偶数。仅当</li>为奇数或i等于i时,才应添加结束team.Medewerkers.Count - 1。更改您的代码如下

@foreach (var team in Model.GetTeams)
{
    var i = 0;
    foreach (var employee in team.Medewerkers)
    {
        if (i == 0 || i % 2 == 0)
        {
            @:<li class="flip-card">
                @:<div class="flip-card-back">
                @:</div>
        } 
        else
        {
                @:<div class="flip-card-front">
                @:</div>
        }
        if (i % 2 == 1 || i == team.Medewerkers.Count - 1)
        {
            </li>
        }
        i++;  
    }
}