Partager via


Création d’un contrôleur (C#)

par Stephen Walther

Dans ce tutoriel, Stephen Walther montre comment ajouter un contrôleur à une application ASP.NET MVC.

L’objectif de ce tutoriel est d’expliquer comment créer des contrôleurs ASP.NET MVC. Vous apprenez à créer des contrôleurs à l’aide de l’option de menu Ajouter un contrôleur de Visual Studio et en créant un fichier de classe manuellement.

Utilisation de l’option de menu Ajouter un contrôleur

Le moyen le plus simple de créer un contrôleur consiste à cliquer avec le bouton droit sur le dossier Contrôleurs dans la fenêtre Explorateur de solutions visual Studio et à sélectionner l’option de menu Ajouter, Contrôleur (voir la Figure 1). La sélection de cette option de menu ouvre la boîte de dialogue Ajouter un contrôleur (voir figure 2).

Capture d’écran de la fenêtre Explorateur de solutions Visual Studio, qui montre les options Ajouter et Contrôleur dans le menu contextuel.

Figure 01 : Ajout d’un nouveau contrôleur (Cliquer pour afficher l’image en taille réelle)

Capture d’écran de la boîte de dialogue Ajouter un contrôleur, qui montre le contrôleur par défaut 1 dans le champ Nom du contrôleur.

Figure 02 : Boîte de dialogue Ajouter un contrôleur (cliquer pour afficher l’image en taille réelle)

Notez que la première partie du nom du contrôleur est mise en surbrillance dans la boîte de dialogue Ajouter un contrôleur . Chaque nom de contrôleur doit se terminer par le suffixe Controller. Par exemple, vous pouvez créer un contrôleur nommé ProductController , mais pas un contrôleur nommé Product.

Si vous créez un contrôleur qui ne contient pas le suffixe du contrôleur , vous ne pourrez pas appeler le contrôleur. Ne fais pas ça, j’ai perdu d’innombrables heures de ma vie après avoir fait cette erreur.

Listing 1 - 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: /Product/

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

Vous devez toujours créer des contrôleurs dans le dossier Controllers. Sinon, vous violerez les conventions de ASP.NET MVC et d’autres développeurs auront plus de difficultés à comprendre votre application.

Méthodes d’action de génération automatique

Lorsque vous créez un contrôleur, vous avez la possibilité de générer automatiquement les méthodes d’action Créer, Mettre à jour et Détails (voir la Figure 3). Si vous sélectionnez cette option, la classe de contrôleur dans la liste 2 est générée.

Création automatique de méthodes d’action

Figure 03 : Création automatique de méthodes d’action (cliquer pour afficher l’image en taille réelle)

Listing 2 - Controllers\CustomerController.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 CustomerController : Controller
    {
        //
        // GET: /Customer/

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

        //
        // GET: /Customer/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /Customer/Create

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

        //
        // POST: /Customer/Create

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Customer/Edit/5
 
        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /Customer/Edit/5

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}

Ces méthodes générées sont des méthodes stub. Vous devez ajouter vous-même la logique de création, de mise à jour et d’affichage des détails d’un client. Mais les méthodes stub vous fournissent un bon point de départ.

Création d’une classe de contrôleur

Le contrôleur MVC ASP.NET n’est qu’une classe. Si vous préférez, vous pouvez ignorer la structure pratique du contrôleur Visual Studio et créer manuellement une classe de contrôleur. Procédez comme suit :

  1. Cliquez avec le bouton droit sur le dossier Contrôleurs et sélectionnez l’option de menu Ajouter, Nouvel élément, puis sélectionnez le modèle Classe (voir figure 4).
  2. Nommez la nouvelle classe PersonController.cs, puis cliquez sur le bouton Ajouter .
  3. Modifiez le fichier de classe résultant afin que la classe hérite de la classe System.Web.Mvc.Controller de base (voir listing 3).

Création d’une classe

Figure 04 : Création d’une classe (Cliquer pour afficher l’image en taille réelle)

Listing 3 - Controllers\PersonController.cs

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

namespace MvcApplication1.Controllers
{
    public class PersonController : System.Web.Mvc.Controller
    {
        public string Index()
        {
            return "Hello World!";
        }
    }
}

Le contrôleur de la liste 3 expose une action nommée Index() qui retourne la chaîne « Hello World! ». Vous pouvez appeler cette action de contrôleur en exécutant votre application et en demandant une URL semblable à la suivante :

http://localhost:40071/Person

Notes

Le serveur de développement ASP.NET utilise un numéro de port aléatoire (par exemple, 40071). Lorsque vous entrez une URL pour appeler un contrôleur, vous devez fournir le numéro de port approprié. Vous pouvez déterminer le numéro de port en pointant la souris sur l’icône du serveur de développement ASP.NET dans la zone de notification Windows (en bas à droite de votre écran).