2015-06-28 97 views
3

我需要在後面的C#代碼中構建HTML代碼結構。該代碼插入一個HTML項目,佔據12列的3列(我正在使用Zurb基金會)。在ForEach循環中用HTML包裝代碼包裝每個3項C#

我迭代了一個foreach循環中的項目集合。

我想添加一個<div class='row'>[item html code here]</div>代碼,它將包裝3列項目。

商品代碼是這樣的:

<div class='column large-4 medium-4- small-12' >some content</div> 

我應該使用什麼邏輯(C#),以便能夠注入行代碼中每三個項目的項目HTML代碼?

當我需要使用結束標記(</div>)分隔開始標記(<div class='row'>)並將項目代碼(列div)分開時,我的複雜情況就開始了。

假設需要迭代的大量項目。

結果HTML應該是這個樣子舉例來說,如果我有7個項目:

<div class='row'> 
<div class='column large-4'>item 1</div> 
<div class='column large-4'>item 2</div> 
<div class='column large-4'>item 3</div> 
</div> 
<div class='row'> 
<div class='column large-4'>item 4</div> 
<div class='column large-4'>item 5</div> 
<div class='column large-4'>item 6</div> 
</div> 
<div class='row'> 
<div class='column large-4'>item 7</div> 
</div> 
+1

只需在foreach循環中保留一個計數器並測試'counter%3 = 0'。每次它,關閉一個div並打開一個新的。請注意,如果計數器爲0(所以這是循環內的第一次,您只需要打開div。在循環後刪除最後打開的div(或關閉它)。 –

+0

@ZoharPeled請寫下答案。 –

回答

2

如何使用Zurb基金會塊網格

+0

哇,不知道這個功能是否存在! –

+0

我以前遇到過這個問題,所以我知道你的感受;) – Ahmed

+0

完全解決我的問題。非常感謝Ahmed。 –

2
string BuildItems(int itemCount, int colsPerRow) { 
    StringBuilder sbItemHTML = new StringBuilder(); 
    bool divBegin = true, divClosed = false; 
    for (int i = 0; i < itemCount; i++) { 
     if (divBegin) { 
      sbItemHTML.AppendLine("<div class='row'>"); 
      divBegin = false; 
      divClosed = false; 
     } 

     sbItemHTML.AppendLine("<div class='column large-4'>item " + i + "</div>"); 
     if ((i % colsPerRow == 0) && i > 0) { 
      sbItemHTML.AppendLine("</div>"); 
      divBegin = true; 
      divClosed = true; 
     } 
    } 

    if (!divClosed) 
     sbItemHTML.AppendLine("</div>"); 

    return sbItemHTML.ToString(); 
} 

你怎麼樣去嘗試這個代碼?

使用示例:BuildItems(7,3);

1

如果在for循環中使用計數器;這將有助於通過將計數器除以3來檢查並檢查返回的值是否是完整的數字。如果是,則添加div結束標記(和下一個div開始標記)。下面的例子。

if (Math.Abs(i/3) == (i/3)) { 
str = str + "<div class='column large-4'>" + value + "</div>" + "</div><div class='row'>"; 
} 
else{ 
str = str + "<div class='column large-4'>" + value + "</div>"; 
}