👹 Boss - Mighty View Controller
Dans le projet MVC, faites en sorte que:
- L'action Show()du contrôleurEvenementsControllerretourne une vue viaView()plutôt que du texte viaContent()
- Il vous faudra évidemment créer la vue associée, Show.cshtml
- Passer à la vue un modèle Evenement: ce dernier peut être évidemment codé en dur comme la liste d'événements deIndex.
- Faites en sorte que la vue affiche les détails de l'événement (nom, description, etc.)
- Il vous faudra afficher l'id demandé quelque part dans la page
Bonus
- Déplacez la liste d'événements, déclarée directement dans la fonction Index(), pour qu'elle soit plutôt un attribut de la classe (en dehors de la fonctionIndex())
- Faites en sorte que Index()utilise la liste au niveau de la classe
- Pour l'événement retourné par la fonction Show(), récupérez l'événement dans la liste à partir duidpassé en paramètre, plutôt que de retourner un événement codé en dur. Vous trouverez utile la fonction suivante:
Evenement evenement = Evenements.Find((e => e.Id == id));
Cheat Code 

Vue ShowContrôleur
Show.cshtml
@model Evenement
@{
    ViewBag.Title = Model.Nom;
    Layout = "_Layout";
}
<h1>@Model.Nom - Id: @Model.Id</h1>
@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>
EvenementsController.cs
using System.ComponentModel;
using Microsoft.AspNetCore.Mvc;
using Snowfall.Web.Mvc.Models;
namespace Snowfall.Web.Mvc.Controllers;
[Route("[controller]")]
public class EvenementsController : Controller
{
    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",
            Description = "À quoi ressemblerait une compétition de Space Quest 6 est un mystère.",
            Capacite = 50, // 1400 personnes
            Date = DateTime.Now + TimeSpan.FromDays(60), // dans 60 jours
            Prix = new decimal(29.00), // 29$ l'inscription, en decimal
            Ville = "Los Angeles, US",
            ImagePath = "https://via.placeholder.com/350x150",
        },
    };
    
    [Route("/")]
    public IActionResult Index()
    {
        return View(Evenements);
    }
    
    [HttpGet("{id:int}")]
    public IActionResult Show(int id, string? option)
    {
        Evenement evenement = Evenements.Find((e => e.Id == id));
        return View(evenement);
    }
    
    [HttpGet("{id:int}/edit")]
    public IActionResult Edit(int id)
    {
        return Content("Vue Edit de EvenementsController, id: " + id);
    }
}