From ec07fa692152e48692e3b7c0a489c74499b8a193 Mon Sep 17 00:00:00 2001 From: "josephine.vetu" Date: Wed, 25 Mar 2026 16:57:19 +0100 Subject: [PATCH] =?UTF-8?q?D=C3=A9placement=20du=20linq=20pour=20grouper?= =?UTF-8?q?=20les=20albums=20par=20titre=20de=20la=20vue=20=C3=A0=20un=20V?= =?UTF-8?q?iewModel.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Artiste/ArtisteDetailsViewModel.cs | 15 ++++++++++++ .../Views/Artiste/Index.cshtml | 23 +++++++++---------- 2 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 Webzine.WebApplication/ViewModels/Artiste/ArtisteDetailsViewModel.cs diff --git a/Webzine.WebApplication/ViewModels/Artiste/ArtisteDetailsViewModel.cs b/Webzine.WebApplication/ViewModels/Artiste/ArtisteDetailsViewModel.cs new file mode 100644 index 0000000..2a53603 --- /dev/null +++ b/Webzine.WebApplication/ViewModels/Artiste/ArtisteDetailsViewModel.cs @@ -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> AlbumsGroupes { get; set; } + = Enumerable.Empty>(); + } +} diff --git a/Webzine.WebApplication/Views/Artiste/Index.cshtml b/Webzine.WebApplication/Views/Artiste/Index.cshtml index f719270..3b4cdf9 100644 --- a/Webzine.WebApplication/Views/Artiste/Index.cshtml +++ b/Webzine.WebApplication/Views/Artiste/Index.cshtml @@ -1,4 +1,4 @@ -@model Webzine.Entity.Artiste +@model Webzine.WebApplication.ViewModels.Artiste.ArtisteDetailsViewModel; @{ ViewData["Title"] = "Artiste"; @@ -8,22 +8,20 @@

@Model.Nom

-
+

@Model.Biographie

Albums

-
+
- @* 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()) +{ +

Cet artiste n'a pas encore de titres répertoriés.

+} +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 @@
} +} \ No newline at end of file