![](/img/trans.png)
[英]ASP.NET MVC: How do I pass a list (from a class in Model) to a repeater in a View?
[英]How do i show a list from a model to another View in ASP.NET MVC 4
我有一個Topic
列表。 每個Topic
都有一個Message
列表。 當我單擊“詳細信息”時,我想打開一個新視圖,該視圖顯示主題中Message
的列表。
我希望我需要修改以下行:(這是我到目前為止的內容)
@Html.ActionLink("Details", "Details", new { id=item.Id }, null)
Message
可以通過item.Message
訪問。
以及細節視圖中的第一行
@model IEnumerable<Models.TopicMessage>
@model IEnumerable<Models.Topic> <table> <tr> <th> @Html.DisplayNameFor(model => model.Name) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Name) </td> <td> @Html.ActionLink("Details", "Details", new { id=item.Id }, null) </td> </tr> } </table>
有很多方法可以做到這一點。 您可以使用Action
方法直接執行控制器操作:
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.Action("Details", "Details", new { id=item.Id })
</td>
</tr>
或者,您可以使用DisplayFor
此重載繞過控制器並直接呈現視圖:
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Messages, "MessagesDetail")
</td>
</tr>
或者,如果您將模板定義為默認的DisplayTemplate
,則可以執行以下操作:
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Messages)
</td>
</tr>
我通過制作一個同時包含liste和Id的somethingViewModel
來解決此問題。 這樣,我可以將來自兩個不同位置的兩個信息包含在我可以在視圖中訪問的一個新對象中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.