1

我有一个Topic's 列表。每个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>
4

2 回答 2

1

有很多方法可以做到这一点。您可以使用该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>

或者,如果您将模板定义为 default DisplayTemplate,您可以这样做:

<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Name)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Messages)
    </td>
</tr>
于 2013-09-20T21:03:34.507 回答
0

我通过制作一个somethingViewModel同时包含列表和 ID 来解决这个问题。这样我就可以在一个我可以在视图中访问的新对象中包含来自两个不同位置的两个信息。

于 2013-10-18T08:46:06.647 回答