Aller au contenu principal

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:

  1. Clic droit sur le dossier Controllers du projet Snowfall.Web.Mvc

  2. Add -> @Controller Imgur

  3. Nommez le contrôleur EvenementsController Imgur

  4. 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

important

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'

important

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.

  1. Créer un dossier Evenements sous Views Imgur

  2. Créer une vue Index sous Views/Evenements en utilisant l'option @ Razor MVC View with Layout Imgur

  3. 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:

Imgur

Pas très utile pour le moment, mais le tout fonctionne!