似乎无法使用Razor的foreach和if语句有条件地创建新的表行?

Cod*_*ick 13 razor asp.net-mvc-3

我想要一个循环来动态创建一个最多2列宽的表,然后增加行数,直到列表中没有任何条目.听起来很简单,我想出了这个:

<table>
                    <tr>
                        @{ var i = 0; }
                        @foreach (var tm in Model.TeamMembers)
                        {
                            <td>@tm.FirstName @tm.LastName @tm.Role</td>

                            if(++i % 2 == 0)
                            {
                                </tr>
                                <tr>
                            }
                        }
                    </tr>
                </table>
Run Code Online (Sandbox Code Playgroud)

但我得到错误说明for for循环和if语句.如果我将标签更改为其他标签(例如),它可以正常工作.

我的猜测是它试图验证行的结尾,看到它并决定循环必须结束?我怎么能不这样做,或者我是否需要将整个表放在循环中并带有一堆杂乱的条件?:(

Dar*_*rov 29

试试这样:

@{ var i = 0; }
@foreach (var tm in Model.TeamMembers)
{
    <td>@tm.FirstName @tm.LastName @tm.Role</td>
    if(++i % 2 == 0)
    {
        <text></tr><tr></text>
    }
}
Run Code Online (Sandbox Code Playgroud)

要么:

@{ var i = 0; }
@foreach (var tm in Model.TeamMembers)
{
    <td>@tm.FirstName @tm.LastName @tm.Role</td>
    if(++i % 2 == 0)
    {
        @:</tr><tr>
    }
}
Run Code Online (Sandbox Code Playgroud)