Aller au contenu principal

27-1 Page Show

Modifier la vue Index

Cette étape est optionnelle, mais on peut modifier la vue Index afin que cette dernière utilise une table.

On peut modifier le composant EvenementListe de la façon suivante:

Snowfall.Web.Admin/Pages/Evenements/Components/EvenementListe.razor
@using Snowfall.Application.Dtos.Evenements

@if (Evenements == null)
{
<p>Chargement des événements...</p>
}
else
{
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Nom</th>
<th scope="col">Ville</th>
</tr>
</thead>
<tbody>
@foreach (EvenementDto evenement in Evenements)
{
<tr>
<td>@evenement.Id</td>
<td>@evenement.Nom</td>
<td>@evenement.VilleId</td>
</tr>
}
</tbody>
</table>
}

@code {
[Parameter]
public List<EvenementDto>? Evenements { get; set; }
}
info

Peu de changements, outre qu'on affiche un peu plus d'informations et que l'information est affichée sous forme de table.

Remarquez qu'on affiche VilleId, nous allons remédier à cette situation prochainement pour afficher le nom de la ville. Pour l'instant, le DTO ne contient que l'identifiant.

Créer la page Show

Pour afficher le détail d'un événement et éventuellement le modifier, il faudra une page Show, en plus de la page Index responsable d'afficher les événements.

Créer la page

Dans le projet Admin, sous le dossier Pages/Evenements, faire Add-> Blazor Component, utilisez @Page et nommer la composante Show.

Snowfall.Web.Admin/Pages/Evenements/Show.razor
<h3>Show</h3>

@code {

}

Définir l'URL de la page

La page Show doit montrer le détail d'un produit. Elle doit donc pouvoir accepter un paramètre.

Pour définir une page associée à une URL dynamique, on peut utiliser la forme suivante pour la directive @page:

Snowfall.Web.Admin/Pages/Evenements/Show.razor
@page "/evenements/{Id:int}"

<h3>Show</h3>

@code {
[Parameter]
public int Id { get; set; }
}
info

L'URL associée à la page est /evenements/{Id:int}, {Id:int} étant une portion dynamique.

Une page associée à une URL dynamique définit ce paramètre dans la directive @page.

Il faut aussi définir l'attribut [Parameter] dans la portion @code correspondant au paramètre mentionné dans la directive @page.

Faire le lien entre Index et Show

On veut que lorsqu'on clique sur un événement dans la liste, être amené vers la vue show. Pour ce faire, il nous faut un lien.

Faire le lien est très simple, on n'a qu'à utiliser <NavLink>, tout en construisant le lien vers la page Show pour qu'il prenne en compte le id de l'événement à afficher.

Snowfall.Web.Admin/Pages/Evenements/Components/EvenementListe.razor
@foreach (EvenementDto evenement in Evenements)
{
<tr>
<td>@evenement.Id</td>
<td><NavLink href=@($"/evenements/{@evenement.Id}")>@evenement.Nom</NavLink></td>
<td>@evenement.VilleId</td>
</tr>
}

Voilà, le lien fonctionne. Cependant, il faut maintenant récupérer l'information en provenance de l'API!