請教各位先進,我想做Bootstrap 折疊(Collapse)插件的效果,參考如下:
Collapse
從資料庫撈出了List N 筆資料,在View中跑了foreach
@foreach (var item in Model.PaperEditorDataList)
{
int count = 0;
<button type="button" class="btn btn-primary" data-toggle="collapse"
data-target="#demo">
折疊按鈕1
</button>
<div id="demo" class="collapse">
內容1
</div>
count++;
}
請問我該如何動態的產生出不同的data-target="#demo"呢?
預期產生出的HTML如下:
<button type="button" class="btn btn-primary" data-toggle="collapse"
data-target="#demo1">
折疊按鈕1
</button>
<div id="demo1" class="collapse">
內容1
</div>
<button type="button" class="btn btn-primary" data-toggle="collapse"
data-target="#demo2">
折疊按鈕2
</button>
<div id="demo2" class="collapse">
內容2
</div>
<button type="button" class="btn btn-primary" data-toggle="collapse"
data-target="#demo3">
折疊按鈕3
</button>
<div id="demo3" class="collapse">
內容2
</div>
用 @() 將變數插入
@{
int count = 0;
foreach (var item in Model.PaperEditorDataList)
{
<button type="button" class="btn btn-primary" data-toggle="collapse" data-target="#demo@(count)">
// ...
</button>
<div id="demo@(count)" class="collapse">
// ...
</div>
count++;
}
}
不過你的情況用For是不是更簡潔一點~XDD
@for (int i = 0; i < Model.PaperEditorDataList.Count - 1; i++)
{
<button type="button" class="btn btn-primary" data-toggle="collapse" data-target="#demo@(i)">
// ...
</button>
<div id="demo@(i)" class="collapse">
// ...
</div>
}
感謝,原來是這樣的寫法,己成功~
用for確實更簡潔一點,其實有點搞不懂for跟foreach的實用情境,兩個得出的結果都一樣,所以不知道什麼情況下用for,什麼情況下用foreach,感謝YoChen大師解惑~
您可以判斷
這個collection會不會用到index?
會的話用for,不會的話用foreach
要不要修改collection內的值?
要的話只能用for
是不是要追求極致效能?
是的話用for,不是的話用foreach
您可能會想問,既然foreach這麼差,為什麼還要用呢~XDD
因為foreach有個很重要的地方,就是他具備非常好的可讀性,這可以讓後續維護省去很多不必要的時間。
了解,多上了一課,感謝指教~
請問我照著上面的方式做,出來還是demo0,是哪裡有出錯呢?
asp.net MVC
新創的帳號 沒辦法回文 ! 感謝YoChen大解惑!
抱歉,範例中的int count
應該宣告在foreach外面,否則每跑一次foreach都會重新宣告一次count = 0
,我已經修正過答案了,請您再做調整即可~
感謝YoChen大的幫助,問題已解決!