3-3 Liens dynamiques
Si à partir de la page d'accueil nous voulons faire un lien (<a href>
) vers un événement, il nous faut construire ce lien dynamiquement. En effet, il faut y ajouter un paramètre.
Il est effectivement possible de faire un lien autant vers /evenements/1
que vers /evenements/1234324234
, tout dépendant de l'événement à afficher et récupérer.
Ajouter une propriété Id
au modèle Evenement
Ajoutez à votre modèle Evenement
une propriété Id
:
public class Evenement
{
public int Id { get; set; }
public required string Nom { get; set; }
//...
}
Modifier les événements retournés par Index()
Afin d'inclure l'identifiant au niveau de la vue et ainsi faire un lien vers l'événement, ajoutons cet identifiant à la liste retournée.
Nous utiliserons des identifiants hard codés pour l'instant
public IActionResult Index()
{
List<Evenement> evenements = new List<Evenement>()
{
new Evenement()
{
Id = 1,
Nom = "Super Duper Événement LoL",
Description = "Compétition de League of Legends.",
Capacite = 1400, // 1400 personnes
Date = DateTime.Now + TimeSpan.FromDays(30), // dans 30 jours
Prix = new decimal(49.00), // 49$ l'inscription, en decimal
Ville = "Montreal, CA",
},
new Evenement()
{
Id = 2,
Nom = "Super Duper Événement Space Quest 6 Roger Wilco",
//...
Faire le lien vers Show
Dans la vue partielle utilisée par l'index, ajoutez un lien vers le détail d'un événement:
@model Evenement
<h2>@Model.Nom</h2>
@if (@Model.ImagePath != null)
{
<img src="@Model.ImagePath" />
}
<p>@Model.Description</p>
<ul>
<li>Date: @Model.Date.ToShortDateString()</li>
@{
var classeBold = @Model.Capacite > 1000 ? "fw-bold" : null;
}
<li class="@classeBold">Capacité: @Model.Capacite</li>
<li>Prix: @Model.Prix</li>
</ul>
<a asp-controller="Evenements" asp-action="Show" asp-route-id="@Model.Id">Détails</a>
On construit un lien à l'aide des attributs asp-
. Plus particulièrement:
asp-controller
asp-action
asp-route-id
À noter que asp-route-
est une option dynamique qui change en fonction du nom de nos paramètres. Si votre paramètre de route s'appelait bozo
, vous auriez un attribut asp-route-bozo
de disponible.
Finalement, on utilise @Model.Id
pour construire la portion dynamique du lien.
Lancez le projet, et voilà, vous devriez pouvoir naviguer à partir de l'accueil vers l'action Show
en cliquant sur le lien!