我有两个模型类:艺术家和专辑,我想在属于艺术家的索引视图中显示每个艺术家的专辑总数,我想创建除名称“AlbumsTotal”之外的“Name”和“LastName”的其他列“根据艺术家制作的专辑总数,在Index View中,这是我想要的一个例子:
Name LastName TotalAlbums
Frank Sinatra 4
Celine Dion 6
我知道如何创建ViewModel并使用其他视图,但我想使用属于Artist的相同视图并显示信息。你能告诉我怎么做吗?
模型类:
public class Artist
{
public int ArtistID { get; set; }
[Display(Name ="Artist name")]
public string Name { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public virtual List<Album> Albums { get; set; }
}
public class Album
{
public int AlbumID { get; set; }
public string AlbumName { get; set; }
public virtual Artist Artist { get; set; }
public int ArtistID { get; set; }
}
索引视图:
@model IEnumerable<AlexMusicStore.Models.Artist>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ArtistID }) |
@Html.ActionLink("Details", "Details", new { id=item.ArtistID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ArtistID }) |
</td>
</tr>
}
</table>
答案 0 :(得分:1)
一种可能的方法如下。
由于您已经在艺术家的集合中拥有相册,并假设您将艺术家的所有相册加载到此集合中,您可以使用该方法的Count()方法显示该艺术家的专辑总数。列表。
将您的View代码更改为以下内容:
@model IEnumerable<AlexMusicStore.Models.Artist>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th>
@Html.DisplayName("TotalAlbums")
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@item.Albums.Count()
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ArtistID }) |
@Html.ActionLink("Details", "Details", new { id=item.ArtistID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ArtistID }) |
</td>
</tr>
}
</table>