2011-07-13 129 views
0

我可能會在這裏打破一些約定。我有一個來自模型的字典,其對數不詳。我想要顯示所有的鍵/值對,但打破顯示的列數爲五。我認爲這會工作:MVC3關閉標籤Dyanmically

<div class="substatus_group"> 
    <span class="title">Substatus</span> 
    @{int i =0}   
    @foreach (var item in Model.substatus) 
    { 
     if(i > 1 && i % 5 == 0) 
     { 
      </div><div> 
     } 
     <span class="rtm_substatus">@item.Key: @item.Value</span> 
     i++; 
    } 
</div> 

相反,在結束的div托架說,它缺少的開始,而如果環說,它缺少右括號。該頁面不會呈現。

很顯然,Razer並沒有將代碼解釋爲它的寫法,而是在相反的情況下選擇標記爲html/code。我想知道如何強制Razer正確渲染。如果存在更好的解決方案來動態創建標籤,那也是一個很好的答案。

回答

0

這個怎麼樣?使用for循環來管理索引,並檢查每次迭代的模數,而不是跳過第一個。

MVC3/Razor似乎不喜歡在不同範圍內使用開始和結束標籤。

我能夠通過使用局部視圖和一些Linq將字典劃分成不同的「塊」來解決此問題。

您的看法:

@{ 
    string[] keys = Model.Keys.ToArray(); 
    for (int i = 0; i < keys.Length; i += 5) 
    { 
     Html.RenderPartial("_partialView", Model.Skip(i).Take(5)); 
    } 
} 

你的部分觀點:

<div class="substatus_group"> 
    @foreach (KeyValuePair<string, string> item in Model) 
    { 
     <span class="title">Substatus</span> <span class="rtm_substatus">@item.Key: @item.Value</span> 
    } 
</div> 
+0

字典沒有索引。 Item = Model.substatus [i]不是有效的代碼。 – Tyrsius

+0

但是,在循環內部打開和關閉可能會起作用。我會在星期一嘗試這個。 – Tyrsius

+0

@Tyrsius我編輯了代碼來爲字典工作。 –