C# 如何在ASP.NET MVC 4中显示从一个模型到另一个视图的列表
我有一个C# 如何在ASP.NET MVC 4中显示从一个模型到另一个视图的列表,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我有一个主题的列表。每个主题都有一个消息列表。当我单击“详细信息”时,我想打开一个新视图,其中显示主题中的消息列表 我希望我需要修改这一行:(这是我到目前为止所做的) 消息可通过项访问。消息 以及详图视图中的第一行 @model IEnumerable<Models.TopicMessage> @model IEnumerable 这是我的主题视图: @model IEnumerable<Models.Topic> <table> <tr
主题的列表。每个主题
都有一个消息列表
。当我单击“详细信息”时,我想打开一个新视图,其中显示主题中的消息列表
我希望我需要修改这一行:(这是我到目前为止所做的)
消息
可通过项访问。消息
以及详图视图中的第一行
@model IEnumerable<Models.TopicMessage>
@model IEnumerable
这是我的主题视图:
@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>
@model IEnumerable
@DisplayNameFor(model=>model.Name)
@foreach(模型中的var项目){
@DisplayFor(modelItem=>item.Name)
@ActionLink(“详细信息”,“详细信息”,新的{id=item.id},null)
}
有很多方法可以做到这一点。您可以使用操作
方法直接执行控制器操作:
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.Action("Details", "Details", new { id=item.Id })
</td>
</tr>
或者,如果将模板定义为默认的DisplayTemplate
,则可以执行以下操作:
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Messages)
</td>
</tr>
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Messages)
有很多方法可以做到这一点。您可以使用操作
方法直接执行控制器操作:
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.Action("Details", "Details", new { id=item.Id })
</td>
</tr>
或者,如果将模板定义为默认的DisplayTemplate
,则可以执行以下操作:
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Messages)
</td>
</tr>
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Messages)
我通过制作一个同时包含列表和Id的somethingViewModel
修复了这个问题。这样,我可以在视图中访问的一个新对象中包含来自两个不同位置的两个信息。我通过制作一个同时包含列表和Id的somethingViewModel
修复了这个问题。我可以这样做在视图中访问的一个新对象中包含来自两个不同位置的两个信息。我无法理解。您正在为该行中的每个主题创建链接。是否要显示邮件列表的部分视图?@UfukHacıoğulları我想打开一个包含此主题包含的所有邮件的新视图。您对此有部分视图吗?我只知道MVC 4两天。我知道“局部视图”适用于可以在其他视图中重用的视图。但我第一次在这里想,在升级到局部视图之前,我应该让它在正常视图下工作,但这可能是一个糟糕的策略?我不明白。您正在为该行中的每个主题创建链接。是否要显示邮件列表的部分视图?@UfukHacıoğulları我想打开一个包含此主题包含的所有邮件的新视图。您对此有部分视图吗?我只知道MVC 4两天。我知道“局部视图”适用于可以在其他视图中重用的视图。但我第一次在这里想,在升级到局部视图之前,我应该让它在正常视图下工作,但这可能是一个糟糕的策略?好的,我会尝试一下。将视图设为强类型是个好主意,对吗?应该是这样的,对吗@模型IEnumerable@radbyx是的,这绝对是首选。用这个来代替@model IEnumerable怎么样?我很困惑。我应该带上可以从中获取消息的主题,还是带上消息列表?@radbyx对于单个主题
实体的详细视图,我通常推荐@model.Topic
。通过这种方式,您可以枚举该模型中的TopicMessages
,也可以检查其他属性。但是,如果这只是一个消息列表(不完全是父级主题的完整详细视图),@model IEnumerable
会更好。当然,您可能有一个包含消息列表的详细视图,在这种情况下,您实际上可能有两个视图,但这取决于您的个人喜好。@radbyx抱歉,第四个参数用于为
标记提供html属性。这在@Html.Action
中没有使用。我已经更新了我的答案。好的,我试试看。将视图设为强类型是个好主意,对吗?应该是这样的,对吗@模型IEnumerable@radbyx是的,这绝对是首选。用这个来代替@model IEnumerable怎么样?我很困惑。我应该带上可以从中获取消息的主题,还是带上消息列表?@radbyx对于单个主题
实体的详细视图,我通常推荐@model.Topic
。通过这种方式,您可以枚举该模型中的TopicMessages
,也可以检查其他属性。但是,如果这只是一个消息列表(不完全是父级主题的完整详细视图),@model IEnumerable
会更好。当然,您可能有一个包含消息列表的详细视图,在这种情况下,您实际上可能有两个视图,但这取决于您的个人喜好。@radbyx抱歉,第四个参数用于为
标记提供html属性。这在@Html.Action
中没有使用。我已经更新了我的答案。