2012-07-06 72 views
0

我想在不同類型的常規視圖中放置局部視圖。我從我的Assignment模型創建部分視圖並將其放入/ Views/Shared文件夾中。然後我嘗試在基於另一個模型(InstructorIndexData)的常規視圖中調用局部視圖,並得到錯誤消息:如何將一種類型的局部視圖放入另一種類型的常規視圖中?

傳遞到字典中的模型項類型爲'SchoolIn.ViewModels.InstructorIndexData',但這本字典需要一個'SchoolIn.Models.Assignment'類型的模型項目。

下面是從局部視圖一些代碼:

@model ...Models.Assignment 
<div class="display-label">Grade</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.Grade) 
</div> 

下面是從普通視圖中的一些代碼:

@model SchoolIn.ViewModels.InstructorIndexData 


<td> @Html.Partial("_UpdateAttendance")</td> 

我怎麼能把一個類型的局部視圖進入另一種類型的定期視圖? 感謝您的幫助。

+0

我的部分視圖位於Shard文件夾中,如下所示:〜/ Views/Shared/_UpdateAttendance.cshtml。在常規視圖中,我試圖做@ Html.Partial(「_ UpdateAttendance」)。對不起,我沒有提前加入那一點。 – CloudyKooper 2012-07-06 07:59:58

回答

1

如果您使用的是Html.Partial方法渲染視圖,你可以通過模型作爲第二個參數:

@Html.Partial("_PartialName", item.Grade) 

如果您正在使用的顯示/編輯模板,這是自動完成的:

@Html.DisplayFor(x => x.Grade) 

現在假設Grade屬性的類型爲Assignment,則會呈現~/Views/Shared/DislpayTemplates/Assignment.cshtml

如果在另一方面,你有一個集合屬性:

public IEnumerable<Assignment> Grades { get; set; } 

那麼你可以使用:

@model SchoolIn.ViewModels.InstructorIndexData 
<table> 
    <tr> 
     @Html.DisplayFor(x => x.Grades) 
    </tr> 
</table> 

現在Assignment.cshtml顯示模板將自動被渲染爲等級的每個元素收集,以便您不必在視圖中編寫任何醜陋的循環。

相關問題