2010-07-12 35 views
1

现在我有这个枚举到页面一列单列表的代码。枚举到asp.net mvc视图中的两列表

有没有办法让两个colums一直到最后?

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

<% } %> 

</table> 

回答

2

你可以改变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辅助输出的任何列数。

+0

啊是的,谢谢!我养成使用foreach的习惯,忘记使用其他东西! 谢谢! – riverdayz 2010-07-12 19:14:53

+0

我得到一个错误上的i <= Model.Count 说 操作者<=不能被应用到int类型和方法组opperands – riverdayz 2010-07-12 19:18:34

+0

应当Model.Count() – rtalbot 2010-07-12 19:22:42

0

如果你只是想找一个额外的列,你可以保持在foreach,只是增加一个<td></td>

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

<% } %> 

+0

额外的列需要在其中有下一个item.partno。不只是一个空白列 – riverdayz 2010-07-12 19:28:15

+0

你应该增加这个额外的需求t那么问题 – rtalbot 2010-07-12 19:37:48

+0

其他人已经明白了很好,谢谢 – riverdayz 2010-07-12 20:11:17

2

大厦关闭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>