2-2 Retours ActionResult
Peut-être avez-vous remarqué que l'action Index()
a comme type de retour IActionResult
.
Le I
devant IActionResult
signifie une Interface. Une interface est comme un contrat pour une classe.
Au fond, on dit que le retour de l'action doit se confirmer à la définition de IActionResult
.
Pour mieux comprendre IActionResult
, regardons ce que la fonction View()
retourne.
La fonction View()
La fonction View()
retourne un type ViewResult
.
La documentation de la classe nous renseigne bien sur ce que fait cette fonction et l'objet retourné:
Creates a ViewResult object that renders a view to the response.
Le type de retour ViewResult
Nous pouvons aller plus loin et regarder la définition de ViewResult
:
On remarque que ViewResult implémente bien l'interface (le contrat) IActionResult
et hérite de ActionResult
.
View()
retourne donc bel et bien un objet héritant de ActionResult!
Retourner manuellement un ViewResult
De ce fait, essayez ceci plutôt que d'appeler View()
:
public IActionResult Index()
{
return new ViewResult();
}
Le résultat sera exactement le même.
View()
est un raccourci permettant de retourner un ViewResult() et évite d'écrire à chaque fois new ViewResult()
.
De plus, comme nous le verrons bientôt, il est possible de passer des données à la vue et la fonction View
permet de facilement passer un objet à la vue, en plus de préciser le nom de la vue, si nécessaire.
Types de retour ActionResult
S'il existe ViewResult, vous vous doutez bien qu'il existe d'autres types de retour!
Vous pouvez accéder à la documentation Microsoft de ActionResult, mais les retours les plus utilisés sont les suivants:
Type | Fonction | Description |
---|---|---|
ViewResult | View() | Pour retourner une vue |
PartialViewResult | PartialView() | Pour retourner une vue partielle |
NotFoundResult | NotFound() | Pour retourner une erreur 404 |
JsonResult | Json() | Pour sérialiser un objet en JSON |
RedirectResult | Redirect() | Pour rediriger vers une autre URL |
RedirectToActionResult | RedirectToAction() | Pour rediriger vers une action d'un contrôleur |
FileContentResult | File() | Pour retourner un fichier |
Nous utiliserons certains de ces types de retour plus tard dans le projet.
Exercice
Remplacez le retour View()
par les retours suivants et observez le résultat dans votre navigateur en accédant à l'URL /evenements
.
- Content():
return Content("Un retour via Content()");
- RedirectToAction()
return RedirectToAction("Privacy", "Home");
- NotFound()
return NotFound();