我有这个代码并且工作正常:
@model IEnumerable<Moviestore.Models.Movie>
@{
ViewBag.Title = "Index";
}
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.Genre)
</th>
<th>
@Html.DisplayNameFor(model => model.Author)
</th>
<th>
@Html.DisplayNameFor(model => model.Year)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
if (item.IsDeleted == 0)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Genre)
</td>
<td>
@Html.DisplayFor(modelItem => item.Author)
</td>
<td>
@Html.DisplayFor(modelItem => item.Year)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.MovieID }) |
@Html.ActionLink("Details", "Details", new { id = item.MovieID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.MovieID })
</td>
</tr>
}
}
</table>
但是我需要添加一个模型,我用Tuple这样做了:
@using Moviestore.Models;
@model Tuple<Movie, User>
@{
ViewBag.Title = "Index";
}
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(tuple => tuple.Item1.Title)
</th>
<th>
@Html.DisplayNameFor(tuple => tuple.Item1.Genre)
</th>
<th>
@Html.DisplayNameFor(tuple => tuple.Item1.Author)
</th>
<th>
@Html.DisplayNameFor(tuple => tuple.Item1.Year)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
if (item.IsDeleted == 0)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Genre)
</td>
<td>
@Html.DisplayFor(modelItem => item.Author)
</td>
<td>
@Html.DisplayFor(modelItem => item.Year)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.MovieID }) |
@Html.ActionLink("Details", "Details", new { id = item.MovieID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.MovieID })
</td>
</tr>
}
}
</table>
但现在我对下半部分代码有疑问。 来自@foreach
我不知道我需要放什么代替@foreach(模型中的var项目)
然后@ Html.DisplayFor( modelItem =&gt; item.Title )也需要进行一些更改。
很抱歉很长的帖子,我试着尽可能地解释这个问题。
答案 0 :(得分:1)
正如我在评论中提到的,处理这种情况的适当方法(在特定的View页面上需要多个模型)是使用包含所需模型的ViewModel(参见here for reference)。 / p>
要回答您的具体问题,您可以按其位置访问元组的每个项目,例如:如果您的模型是Tuple<Movie, User>
,那么您可以通过model.Item1
访问Movie对象,通过model.Item2
等访问User对象。
但我强烈建议您采用我链接的ViewModel方法。
答案 1 :(得分:0)
您好,这是您的要求的viewmodel:
public class MovieUserViewModel
{
public IEnumerable<Movie> Movie { get; set; }
public IEnumerable<Users> Users { get; set; }
}
使用上面的viewmodel,您可以轻松访问每个类
@foreach (var item in Model.Movie)
@foreach (var item in Model.Users)
其他信息:Understanding ViewModel in ASP.NET MVC
由于
KARTHIK