Asp.net-Mvc
為集合中的每個項目使用 DisplayTemplate(帶有 DisplayFor)
我為一個
Comment類創建了一個 DisplayTemplate,並將其放在Comment/DisplayTemplates/Comment.cshtml.
Comment.cshtml輸入正確:@model Comment然後,我有一個採用
IEnumerable<Comment>for 模型的局部視圖。在那裡,我遍歷集合併希望將 DisplayTemplate 用於Comment該類。觀點的完整性:@model IEnumerable<Comment> @foreach (var comment in Model.Where(c => c.Parent == null)) { @Html.DisplayFor(model => comment) }但是,我收到一條錯誤
Html.DisplayFor消息:傳入字典的模型項的類型為“System.Int32”,但此字典需要“System.String”類型的模型項。
如何為
foreach循環中的每個項目呼叫 DisplayTemplate?
而不是擁有一個視圖,
IEnumerable<Comment>它所做的只是遍歷集合併簡單地呼叫正確的顯示模板:@Html.DisplayFor(x => x.Comments)其中 Comments 屬性是一個
IEnumerable<Comment>,它將自動執行循環並Comment.cshtml為該集合的每個項目呈現顯示模板。或者,如果您真的需要這樣的視圖(不知道為什麼),您可以簡單地:
@model IEnumerable<Comment> @Html.DisplayForModel()至於
Where您在那裡使用的子句,您應該簡單地刪除它並將此任務委託給控制器。準備視圖模型是控制器的責任,而不是執行此類任務的視圖。