如何在索引视图中显示一些结果

时间:2016-03-31 05:12:45

标签: c# sql asp.net-mvc linq razor

我有两个模型类:艺术家和专辑,我想在属于艺术家的索引视图中显示每个艺术家的专辑总数,我想创建除名称“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>

1 个答案:

答案 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>