我有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>
答案 0 :(得分:1)
有很多方法可以做到这一点。您可以使用Action
方法直接执行控制器操作:
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.Action("Details", "Details", new { id=item.Id })
</td>
</tr>
或者您可以绕过控制器并使用this overload of 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>
答案 1 :(得分:0)
我通过创建一个包含liste和Id的somethingViewModel
来解决这个问题。这样我可以在视图中访问的一个新对象中包含来自两个不同位置的两个信息。