3-1 Introduction aux routes dynamiques
L'utilisation des contrôleurs est plutôt simple jusqu'à maintenant.
Nous nous appuyons sur le fait que l'action par défaut du contrôleur est Index
et que nous n'avons pas à passer de paramètres comme un id
par exemple.
Ceci étant dit, comment pourrions-nous supporter des besoins plus complexes et faire un lien vers la fiche individuelle d'un événement par exemple?
Créer une action Show
dans EvenementsController
-
Créer une fonction Show(). Commencez par créer une action
Show
dansEvenementsController
qui permettra d'afficher la fiche détaillée d'un événement. Cette dernière n'existe pas encore, mais supposons que c'est ce que nous voudrions faire.Snowfall.Web.Mvc/Controllers/EvenementsController.cspublic IActionResult Show()
{
return View();
}Nous allons faire quelque chose d'un peu différent pour l'instant afin de tester la route. En effet, nous allons simplement retourner du contenu textuel, sans vue HTML associée.
Cela permettra de tester le comportement de l'action, à laquelle nous pourrons greffer une vue plus tard.
-
Retourner du texte simple. Ensuite, modifiez l'action
Show()
pour ceci:Snowfall.Web.Mvc/Controllers/EvenementsController.cspublic IActionResult Show()
{
return Content("Vue Show de EvenementsController");
}
En suivant les conventions, cela devrait rendre disponible l'action show sous l'URL /Evenements/Show
Tester l'action et la route
Testons si c'est bien le cas et que l'action Show()
fonctionne bien.
-
Lancer le projet en mode
debug
-
Naviguer à l'URL
/Evenements/Show
une fois le projet démarré dans le navigateur.Vous devriez voir ceci:
http://localhost:5155/Evenements/ShowVue Show de EvenementsController
Passer un paramètre
Pour afficher un événement individuel, on imagine qu'il nous faudra un id
ou une sorte d'identifiant unique à tout de moins pour savoir quel événement afficher.
Dans Program.cs
, le gabarit de route peut nous renseigner sur le comportement par défaut d'une route:
app.MapControllerRoute(
name: "default",
pattern: "{controller=Evenements}/{action=Index}/{id?}");
Observez le paramètre optionnel à la fin: {id?}
. En regardant cela, il devrait être possible d'accéder à une route via /Evenements/Show/1
et de récupérer le paramètre, mais comment?
Il suffit de passer en paramètre à la fonction Show()
une variable nommée id
.
-
Modifiez la fonction
Show()
du contrôleur.Modifiez la fonction pour recevoirint id
en paramètre:Snowfall.Web.Mvc/Controllers/EvenementsController.cspublic IActionResult Show(int id)
{
return Content("Vue Show de EvenementsController, id: " + id);
}Remarquez le paramètre
id
dans la définition de la fonction et ensuite la concaténation du paramètre au contenu affiché.infoLes paramètres passés aux fonctions du contrôleur seront automatiquement associés aux paramètres présents dans l'URL, si ces derniers sont présents.
-
Visitez l'URL suivante (même que tout à l'heure, mais avec un paramètre):
/Evenements/Show/1
Vous devriez voir ceci dans votre navigateur:
http://localhost:5155/Evenements/Show/1Vue Show de EvenementsController, id: 1
Le paramètre a bien été récupéré!