1

我需要在视图中打印此 html:

@foreach (string indices in Model.Indices)
{
    if (counter == 1)
    {
        Response.Write("<tr>");
    }      
                                  
    Response.Write("<td><span class='select'>@Html.CheckBox('nome',false)</span>)");  @indices Response.Write("</td>");

    if (counter > 4) 
    {
        Response.Write("</tr>"); 
    }                
}    

这将打印我要创建的 html 标记。

我知道我只能写 html 但 Razor 抱怨我没有关闭 foreach。

这是我的第一次尝试:

@foreach (string indices in Model.Indices)
{
    if (counter == 1)
    {
        <tr>
    }      
                                  
    <td><span class='select'>@Html.CheckBox('nome',false)</span> @indices </td>

    @if (counter > 4) 
    {
        </tr>
    }                
}  
4

2 回答 2

2

Razor 要求 HTML 标签格式正确;否则,它将不知道何时返回代码上下文。

您可以通过在该行前加上前缀来绕过此限制@:

但是,执行此操作的正确方法是将您的集合分组为一组包含 4 个项目的集合,并使用嵌套的foreach.

于 2012-12-04T15:50:12.287 回答
0

如果我正确理解你想要什么(你想显示 Model.Indices 中的前四个元素吗?),你应该将你的 and 标记从你的 foreach 中移出。像这样的东西:

<tr>
@{var counter = 1;}
@foreach (string indice in indices)
    {
        if(counter>4)
        {break;}
        <td><span class='select'>@Html.CheckBox("nome", false)</span> @indice </td>
        counter++;
    }
</tr>
于 2012-12-04T15:51:02.577 回答