2016-03-31 9 views
0

私は2つのモデルクラスを持っています:アーティストとアルバム、アーティストに属するインデックスビューに表示したいアーティストあたりの総アルバム数、アーティストによって作らアルバムの合計額とAlbumsTotal 『『という名前の』"と』姓は、インデックスビュー内で、ここで私が何をしたいの例です:インデックスビューでいくつかの結果を表示する方法

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

は、これらの3つのプロパティを持つビューモデルを作成し、 'Albums.Count'(またはあなたに基づいて' TotalAlbums'プロパティを設定するには、単に '​​を使用することができます@ item.Albums.Count 'のビュー –

+0

@StephenMueckeスティーブン、ありがとう、私はこれを具体的に他のビューを作成する必要があると思うので、私はちょうど同じアーティストビューにそれを追加する別の方法があったと思っていたすべてのソリューションを調べるために、ViewModelを使用して新しいビューを作成するのが最も良い方法だと思います。 – AlexGH

+0

「@ item.Albums.Count」を使用できますが、linqクエリは実際にはビューとモデルのビューはより良いアプローチです –

答えて

1

1つの可能な方法は以下の通りです。

あなたは既にアーティストのコレクションにアルバムを持っており、このコレクションにアーティストのすべてのアルバムを読み込むと仮定すると、Count()メソッドを使用してアーティストの合計アルバム数を表示できます。リスト。

次のように見て、あなたのビューのコードを変更し

@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> 
+0

これは、ありがとう、これは私がやろうとしていた私は、ループがその特定の特性を持つすべてのArtistオブジェクトの周りにあったことを認識しませんでした。 – AlexGH

関連する問題