Déplacement du linq pour grouper les albums par titre de la vue à un ViewModel.
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
namespace Webzine.WebApplication.ViewModels.Artiste
|
||||
{
|
||||
using Webzine.Entity;
|
||||
public class ArtisteDetailsViewModel
|
||||
{
|
||||
public int IdArtiste { get; set; }
|
||||
public string Nom { get; set; } = string.Empty;
|
||||
public string Biographie { get; set; } = string.Empty;
|
||||
|
||||
// On stocke les titres déjà groupés et triés
|
||||
// La clé est le nom de l'album, la valeur est la liste des titres
|
||||
public IEnumerable<IGrouping<string?, Titre>> AlbumsGroupes { get; set; }
|
||||
= Enumerable.Empty<IGrouping<string?, Titre>>();
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
@model Webzine.Entity.Artiste
|
||||
@model Webzine.WebApplication.ViewModels.Artiste.ArtisteDetailsViewModel;
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Artiste";
|
||||
@@ -8,22 +8,20 @@
|
||||
<div class="container">
|
||||
<h1>@Model.Nom</h1>
|
||||
|
||||
<hr class="mb-5" />
|
||||
<hr/>
|
||||
|
||||
<p class="lead">@Model.Biographie</p>
|
||||
|
||||
<h2 class="mt-5 mb-4">Albums</h2>
|
||||
<hr class="mb-5" />
|
||||
<hr/>
|
||||
|
||||
@* On groupe les titres par nom d'album *@
|
||||
@{
|
||||
var albumsGroupes = Model.Titres
|
||||
.OrderBy(t => t.Libelle) // Trie les titres par ordre alphabétique au sein de chaque groupe futur
|
||||
.GroupBy(t => t.Album) // Groupe par nom d'album
|
||||
.OrderBy(g => g.Key); // Trie les albums par ordre alphabétique (la clé du groupe)
|
||||
}
|
||||
|
||||
@foreach (var groupe in albumsGroupes)
|
||||
@if (!Model.AlbumsGroupes.Any())
|
||||
{
|
||||
<p>Cet artiste n'a pas encore de titres répertoriés.</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var groupe in Model.AlbumsGroupes)
|
||||
{
|
||||
// On récupère le premier titre du groupe pour afficher l'image de l'album
|
||||
var premierTitre = groupe.First();
|
||||
@@ -70,4 +68,5 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
Reference in New Issue
Block a user