在Asp.Net MVC视图中将枚举列举为两列表格

3

现在我有一个代码,它会枚举到一个单列表格一直延伸到页面底部。

有没有办法使其成为两列并排,一直延伸到页面底部?

 <table>
<% foreach (var item in Model)
   { %>
   <tr>
        <td>
          <%=Html.Encode(item.PartNo)%>
       </td>
   </tr>

<% } %>

</table>
3个回答

4

您可以将foreach循环更改为for循环,以提高灵活性:

<% var itemList = Model.ToList(); %>

<table>
<% for (int i=0; i < itemList.Count; i+=2))
   { %>
   <tr>
        <td>
          <%= Html.Encode(itemList[i].PartNo) %>
       </td>
       <td>
          <% if (i+1 < itemList.Count) 
             { 
                 Response.Write(Html.Encode(itemList[i+1].PartNo));
             }
           %>
       </td>
   </tr>
<% } %>
</table>

如果您需要经常这样做,可以考虑将其转换为HTML助手程序来输出任意数量的列。


啊,是的,谢谢!我习惯于使用foreach,忘记了使用其他任何东西!!谢谢! - riverdayz
我在 i<= Model.Count 上遇到了一个错误,提示运算符 <= 不能应用于 int 类型和方法组的操作数。 - riverdayz
好的,现在已经修正了。但我在 "<%=Html.Encode(Model[i].PartNo) %>" 那里遇到一个错误,提示无法对类型为 System.Collections.Generic.IEnumerable<Item> 的表达式应用索引。 - riverdayz
@riverdayz - 你需要将你的IEnumerable转换为List才能在其上使用索引和Count。我已经为你更新了我的代码。 - womp
1
应该是 for (int i=0; i < itemList.Count; i+=2)) - mxmissile

1
基于womp的回答,这里提供一个示例(未经测试!)使用枚举器工作,并且可以显示任意数量的列。这也可能解决您提到的一些问题。
<table><% 
    int numberOfColumns = 2;
    var enumerator = Model.GetEnumerator();
    bool endOfEnumerator = !enumerator.MoveNext();

    while(!endOfEnumerator)
    {   %>
    <tr><%
        for (int i = 0; i < numberOfColumns; i++)
        { %>
        <td>
            <%= Html.Encode(enumerator.Current.PartNo) %>
        </td><%
            if (!enumerator.MoveNext())
            {
                endOfEnumerator = true;
                break;
            }
        } %>
    </tr><%
    } %>
</table>

-1

如果你只是想要一个额外的列,你可以保留 foreach 循环,只需添加一个 <td></td>

<table> 
<% foreach (var item in Model) 
   { %> 
   <tr> 
        <td> 
          <%=Html.Encode(item.PartNo)%> 
       </td> 
       <td>
         <%=Html.Encode(item.NextPartNo)%> 
       </td>
   </tr> 

<% } %> 


额外的列需要填入下一个物品的零件编号,而不仅仅是空白列。 - riverdayz
你应该将这个额外的要求添加到问题中。 - rtalbot
干得好(干得漂亮,womp!)。这个帖子中的所有其他答案都在做不同的事情 - 这是提供问题澄清的一个很好的论据,但无论如何。 - rtalbot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接