2-1 Contrôleurs
Pour notre projet d'exploration, il sera possible de s'inscrire à des évènements de eSports. Nous devons donc être en mesure d'afficher des évènements et d'effectuer des actions autour de ce type de données.
Nous allons donc créer un contrôleur qui nous servira dans un premier temps à afficher les événements.
Créer un contrôleur
Pour créer un nouveau contrôleur, vous pouvez faire:
-
Clic droit
sur le dossierControllers
du projetSnowfall.Web.Mvc
-
Add
->@Controller
-
Nommez le contrôleur
EvenementsController
-
Vous devriez maintenant avoir un fichier comme celui-ci:
using Microsoft.AspNetCore.Mvc;
namespace Snowfall.Web.Mvc.Controllers;
public class EvenementsController : Controller
{
// GET
public IActionResult Index()
{
return View();
}
}
Convention de nommage des contrôleurs
On nomme habituellement les contrôleurs au pluriel: EvenementsController
, CategoriesController
, etc.
La raison est que par défaut, la route (ex.: /evenements
) hérite du nom du contrôleur et si nous voulons autant que possible garder des routes de type REST, la convention veut que la ressource à gérer soit au pluriel.
Il peut cependant exister des exceptions, comme HomeController par exemple.
Créer une vue associée
Nous avons un contrôleur avec une action Index()
, mais pas de vue associée. En effet, la ligne suivante pose problème:
public IActionResult Index()
{
return View();
}
Le compilateur nous indique le message d'erreur suivant: Cannot resolve view 'Index'
La fonction View()
retourne une vue (HTML). Le comportement par défaut, lorsqu'aucun paramètre de nom de vue n’est passé à cette fonction, est que le nom de l'action est utilisé automatiquement comme nom de vue (Index).
Le compilateur s'attend donc à trouver le fichier suivant Views/Evenements/Index.cshtml
Évidemment, il ne le trouve pas.
Créer la vue manquante
Allons de l'avant et créons la vue manquante.
-
Créer un dossier
Evenements
sousViews
-
Créer une vue
Index
sousViews/Evenements
en utilisant l'option@ Razor MVC View with Layout
-
Vous pouvez modifier la vue pour retirer la première ligne contenant
@model TModel
et ainsi obtenir ceci:Snowfall.Web.Mvc/Views/Evenements/Index.cshtml@{
ViewBag.Title = "title";
Layout = "_Layout";
}
<h2>title</h2>
Retour au contrôleur
La ligne suivante dans le contrôleur ne devrait plus être en erreur maintenant que nous avons une vue associée à l'action.
public IActionResult Index()
{
return View();
}
Exécuter et visiter /evenements
Vous pouvez lancer le site via l'option Run
et visiter l'URL /evenements
:
Pas très utile pour le moment, mais le tout fonctionne!