Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Developpez.com - Microsoft DotNET
X

Choisissez d'abord la catégorieensuite la rubrique :


Vue d'ensemble des contrôleurs ASP.NET MVC

Date de publication : 19 avril 2009

Par Lainé Vincent (Traduction) (autres articles)
 

Cet article explore le sujet des contrôleurs, des contrôleurs d'actions et des résultats d'actions. Une fois ce tutorial fini, vous serez en mesure de comprendre comment les contrôleurs gèrent la navigation des visiteurs.

               Version PDF (Miroir)   Version hors-ligne (Miroir)

Traduction
B. Comprendre les contrôleurs
C. Comprendre les actions des contrôleurs
D. Comprendre les résultats d'action
E. Résumé


Traduction

Cet article est la traduction la plus fidèle possible de l'article original : en ASP.NET MVC Controller Overview


B. Comprendre les contrôleurs

Les contrôleurs MVC ont pour rôle de répondre à une requête d'un navigateur sur un site MVC. Toute les url sont mappés à un contrôleur particulier. Par exemple imaginez que vous tapiez cette url dans votre barre d'adresse :
http://localhost/Product/Index/3
Dans ce cas un contrôleur nommé ProductController est appelé. ProductController est chargé de générer la réponse à la requête. Par exemple le contrôleur peut retourner une vue particulière au navigateur ou rediriger la requête vers un autre contrôleur.
Controllers\ProductController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MvcApplication1.Controllers
{
    public class ProductController : Controller
    {
        //
        // GET: /Products/

        public ActionResult Index()
        {
            // Add action logic here
            return View();
        }

    }
}
Comme vous pouvez le voir, un contrôleur est juste une classe (au sens C# ou VB.NET). Un contrôleur hérite de la classe System.Web.Mvc.Controller. Grâce à cet héritage, un contrôleur obtient un certain de nombre de méthodes très intéressante sans aucun effort ! (Nous allons parler de ces méthodes dans un moment).


C. Comprendre les actions des contrôleurs

Les contrôleurs exposent des Actions. Une action est une méthode qui est appelé lorsque vous entrez une url particulière dans votre barre d'adresse. Par exemple, imaginez que vous entrez l'adresse suivante :
http://localhost/Product/Index/3
Dans ce cas la méthode Index() du contrôleur ProductController est appelé. La méthode Index() est un exemple d'action de contrôleur.
Une action doit être une méthode publique de la classe contrôleur. Par défaut les méthodes sont privées en C#. Il faut comprendre que toutes les méthodes publiques d'un contrôleur sont automatiquement des actions. Vous devez donc faire attention car elles peuvent être appelées par n'importe qui de n'importe où simplement en tapant l'adresse correct dans un navigateur.
Il existe d'autre condition pour qu'une méthode soit une action. Une méthode utilisée entant qu'action ne doit pas être surchargée. De plus elle les actions de contrôleurs ne peuvent pas être statique. A part cela, vous pouvez n'importe quelle méthode comme action.


D. Comprendre les résultats d'action

Une action de contrôleur renvoi quelque appelé "résultat d'action". Un résultat d'action est ce qu'une action renvoi au navigateur en réponse à la requête.
Le framework ASP.NET MVC supporte un certain nombre de résultat d'action incluant :

Tout ces résultats d'actions héritent de la classe ActionResult.
Dans la plus part des cas, une action renvoi un ViewResult. Par exemple l'action Index() dans l'exemple 2 renvoi un ResultView.
Controllers\BookController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MvcApplication1.Controllers
{
    public class BookController : Controller
    {

        public ActionResult Index()
        {
            // Add action logic here
            return View();
        }

    }
}
Quant une action renvoi un ViewResult, de l'HTML est retourné au navigateur. La méthode Index() dans l'exemple 2 renvoi une vue nommée Index au navigateur.

Notez que l'action Index() ne renvoi pas directement un ViewResult. A la place la méthode View() de la classe de base Controller est appelé. Normalement vous ne renvoyez pas un ActionResult directement. A la place vous devez utiliser une des méthodes suivantes de la classe contrôleur :

Si vous souhaitez renvoyer une vue au navigateur, vous appelez la méthode View(). Si vous souhaitez rediriger l'utilisateur vers une autre action, vous appelez la méthode RedirectToAction. Par exemple dans la méthode Detail() de l'exemple 3, soit on affiche la vue Detail, soit on redirige l'utilisateur vers l'Index en fonction de la valeur du paramètre Id
Controller\CustomerController.cs

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class CustomerController : Controller
    {
        public ActionResult Details(int? id)
        {
            if (!id.HasValue)
                return RedirectToAction("Index");

            return View();
        }

        public ActionResult Index()
        {
            return View();
        }

    }
}
La méthode ContentResult est spéciale. Vous pouvez utilisez le résultat ContentResult pour renvoyer un résultat sous forme de texte. Par exemple, le méthode Index de l'exemple 4 renvoi un message texte au lieu d'HTML.
Controllers\StatusController.cs

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class StatusController : Controller
    {

        public ActionResult Index()
        {
            return Content("Hello World!");
        }

    }
}
Quand l'action StatusController.Index() est appelé, une vue n'est pas retournée, à la place le texte "Hello World!" est renvoyé au navigateur.

Si une action renvoi un résultat qui n'est pas un ActionResult, alors ce résultat est automatiquement encapsulé dans un ContentResult. Par exemple quand l'action Index() de l'exemple 5 est appelé la date est renvoyé dans ContentResult automatiquement :

using System;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class WorkController : Controller
    {
 
        public DateTime Index()
        {
            return DateTime.Now;
        }

    }
}
L'action Index de l'exemple 5 renvoi un objet DateTime. Le framework ASP.NET MVC convertie le DateTime en string et l'encapsule dans un ContentResult automatiquement. Le navigateur obtient le datetime entant que texte simple.


E. Résumé

Le but de cet article était d'introduire les contrôleurs ASP.NET MVC, les actions et résultats d'action. Dans la première partie vous avez vu comment ajouter de nouveau contrôleur dans un projet ASP.NET MVC. Ensuite vous avez vu comment les méthodes publiques d'un contrôleur sont exposées au monde en tant qu'action. Finalement nous avons discuté des divers résultats d'actions qui peuvent être renvoyés par une action. En particulier nous avons parlé de comment renvoyer un ViewResult, un RedirectToActionResult et un ContentResult depuis une action.



               Version PDF (Miroir)   Version hors-ligne (Miroir)

Valid XHTML 1.1!Valid CSS!

Copyright © 2009 Vincent Lainé. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.

Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -