Aller au contenu principal

2-2 Retours ActionResult

Peut-être avez-vous remarqué que l'action Index() a comme type de retour IActionResult.

important

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.

Imgur

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:

Imgur

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.

important

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:

TypeFonctionDescription
ViewResultView()Pour retourner une vue
PartialViewResultPartialView()Pour retourner une vue partielle
NotFoundResultNotFound()Pour retourner une erreur 404
JsonResultJson()Pour sérialiser un objet en JSON
RedirectResultRedirect()Pour rediriger vers une autre URL
RedirectToActionResultRedirectToAction()Pour rediriger vers une action d'un contrôleur
FileContentResultFile()Pour retourner un fichier
important

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.

  1. Content():
    return Content("Un retour via Content()");
  2. RedirectToAction()
    return RedirectToAction("Privacy", "Home");
  3. NotFound()
    return NotFound();