2010-07-12 32 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>