👹 Boss - Mighty View Controller
Dans le projet MVC, faites en sorte que:
- L'action
Show()
du contrôleurEvenementsController
retourne 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 duid
passé 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);
}
}