Developpez.com - Microsoft DotNET
X

Choisissez d'abord la catégorieensuite la rubrique :


MVC Music Store Partie 2 : Contrôleurs

Date de publication : 10/01/2012. Date de mise à jour : 10/01/2012.

Par Jon Galloway (Blog)
 Jean-Michel Ormes (Traduction) (Home) (Blog)
 

Le MVC Music Store est une application d'étude qui introduit et explique étape par étape comment utiliser ASP.NET MVC et Visual Web Developer pour faire du développement web. Le MVC Music Store est un exemple simplifié d'application de magasin qui vend des albums de musique en ligne, implémente l'administration du site, l'authentification d'utilisateurs et la fonctionnalité d'achat sous forme de panier. Ce tutoriel détaille toutes les étapes à suivre pour construire le MVC Music Store. La partie 2 du tutoriel s'intitule "Contrôleurs".
Retrouvez l'ensemble des articles de la série sur cette page : MVC Music Store
N'hésitez pas à laisser votre avis sur le contenu de l'article directement via le forum : 5 commentaires Donner une note à l'article (5)

       Version PDF (Miroir)   Version hors-ligne (Miroir)
Viadeo Twitter Facebook Share on Google+        



Traduction
1. Introduction
2. Ajouter un HomeController
3. Exécuter l'application
4. Ajouter un StoreController
Remerciements


Traduction

Cet article est la traduction non officielle de l'article original de en Jon Galloway,en Part 2: Controllers

Le code source ainsi que le support technique sont disponibles à cette adresse : en http://mvcmusicstore.codeplex.com


1. Introduction

Avec les frameworks web traditionnels, les URL entrantes sont généralement mappées à des fichiers sur le disque. Par exemple: une demande pour une URL comme "/Products.aspx" ou "/Products.php" pourrait être traitée par un fichier "Products.aspx" ou "Products.php".

Les frameworks web basés sur le framework MVC mappent les URL sur le code serveur d'une façon légèrement différente. Au lieu de mapper les URL entrantes à des fichiers, ils mappent les URL à des méthodes de classes. Ces classes sont appelées "Contrôleurs" et sont responsables du traitement des requêtes http entrantes, de la gestion des entrées utilisateur, de la récupération et sauvegarde de données, et déterminent la réponse à envoyer au client (afficher du HTML, télécharger un fichier, rediriger vers une URL différente, etc.).


2. Ajouter un HomeController

Nous allons commencer notre application MVC Music Store en ajoutant une classe contrôleur qui va rediriger les URL vers la page d'accueil de notre site. Nous allons suivre les conventions de nommage par défaut d'ASP.NET MVC et l'appeler HomeController.

Faites un clic droit sur le dossier "Controllers" dans l'explorateur de solution et sélectionnez "Add", "Controller…" :

Cela fera apparaître la boîte de dialogue " Add Controller ". Nommez votre contrôleur "HomeController" et cliquez sur le bouton Add.

Cela va créer un nouveau fichier, HomeController.cs, avec le code suivant :

      
using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.Mvc;
 
namespace MvcMusicStore.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        public ActionResult Index()
        {
            return View();
        }
    }
}

			
Pour commencer le plus simplement possible, nous allons remplacer la méthode Index par une simple méthode qui renverra un string. Nous allons faire deux changements :

La méthode devrait maintenant ressembler à ceci :

      
public string Index()
{
    return "Hello from Home";
}

			

3. Exécuter l'application

Maintenant, exécutons le site. Nous pouvons lancer notre serveur web et essayer notre site en utilisant l'une des méthodes suivantes :

L'utilisation de l'une des étapes précédentes va compiler notre projet, et provoquer le démarrage du serveur de développement ASP.NET qui est intégré à Visual Web Developer. Une notification apparaîtra dans le coin inférieur de l'écran indiquant que le serveur de développement ASP.NET a démarré, et affichera le numéro du port utilisé par le serveur.

Visual Web Developer ouvrira automatiquement une fenêtre de navigateur dont l'URL pointe vers notre serveur web. Ceci nous permettra de tester rapidement notre application web :

OK, ce fut assez rapide - nous avons créé un nouveau site web, ajouté une fonction de trois lignes, et nous avons fait apparaître du texte dans le navigateur. Rien de bien sorcier, mais c'est déjà un début.

Note: Visual Web Developer inclut le serveur de développement ASP.NET, qui va exécuter votre site web sur un numéro de port libre et aléatoire. Dans la capture d'écran ci-dessus, le site s'est lancé sur http://localhost:26641/, donc il utilise le port 26641. Votre numéro de port sera différent. Lorsque nous parlons d'URL comme /Store/Browse dans ce tutoriel, ceci vient après le numéro de port. En supposant que le numéro de port soit 26641, naviguer vers /Store/Browse revient à naviguer vers http://localhost:26641/Store/Browse.


4. Ajouter un StoreController

Nous avons ajouté un simple HomeController qui implémente la page d'accueil de notre site. Nous allons maintenant ajouter un autre contrôleur que nous utiliserons pour implémenter la fonctionnalité de navigation de notre magasin de musique. Notre contrôleur de magasin va prendre en charge trois scénarios :

Nous allons commencer par ajouter une nouvelle classe StoreController. Si ce n'est déjà fait, arrêtez votre application en fermant le navigateur ou en choisissant Stop Debugging dans le menu Debug.

Maintenant, ajoutez un nouveau StoreController. Comme fait précédemment avec le HomeController, nous allons faire cela en effectuant un clic droit sur le dossier "Controllers" dans l'explorateur de solution et choisir "Add", "Controller…" :

Notre nouveau StoreController contient déjà une méthode "Index". Nous allons utiliser cette méthode "Index" pour implémenter notre page listant tous les genres de notre magasin de musique. Nous allons également ajouter deux autres méthodes qui implémenteront les deux autres scénarios que nous souhaitons que notre StoreController manipule : Browse et Details.

Ces méthodes (Index, Browse et Details) au sein de notre contrôleur sont appelées "Actions", et comme vous avez déjà pu le voir dans la méthode HomeController.Index(), leur travail consiste à répondre à des requêtes URL et (généralement) à déterminer quel contenu doit être envoyé au navigateur où l'utilisateur a invoqué l'URL.

Nous allons commencer notre implémentation du StoreController en changeant la méthode Index() qui va retourner la chaîne "Hello from Store.Index()" et nous allons ajouter des méthodes similaires pour Browse() et Details() :

      
using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.Mvc;
 
namespace MvcMusicStore.Controllers
{
    public class StoreController : Controller
    {
        //
        // GET: /Store/
        public string Index()
        {
            return "Hello from Store.Index()";
        }
        //
        // GET: /Store/Browse
        public string Browse()
        {
            return "Hello from Store.Browse()";
        }
        //
        // GET: /Store/Details
        public string Details()
        {
            return "Hello from Store.Details()";
        }
    }
}

			
Lancez le projet une nouvelle fois et rendez-vous sur les URL suivantes :

Accéder à ces URL invoquera les actions dans notre contrôleur et renverra les chaînes définies :

C'est bien, mais ce sont juste des chaînes statiques. Rendons-les dynamiques, afin qu'elles prennent des informations contenues dans l'URL et l'affichent dans la page de sortie.

En premier lieu, nous allons changer l'action Browse afin de récupérer une valeur querystring de l'URL. Nous pouvons faire ceci en ajoutant un paramètre "genre" à notre action. Lorsque nous faisons cela, ASP.NET MVC va automatiquement passer n'importe quel querystring ou paramètre de formulaire appelé "genre" à notre action lorsqu'elle sera invoquée.

      
//
// GET: /Store/Browse?genre=Disco
public string Browse(string genre)
 {
    string message = HttpUtility.HtmlEncode("Store.Browse, Genre = "
+ genre);
 
    return message;
 }


			
Note : nous utilisons la méthode HttpUtility.HtmlEncode pour assainir la saisie utilisateur. Cela empêche les utilisateurs d'injecter du JavaScript dans notre vue avec un lien comme

     
 /Store/Browse?Genre=</i><script>window.location='http://hackersite.com'</script>.

			
Maintenant, rendons-nous sur /Store/Browse?Genre=Disco

Nous allons maintenant changer l'action Details afin de lire et d'afficher un paramètre d'entrée appelé ID. Contrairement à notre précédente méthode, nous n'allons pas mettre la valeur de l'ID dans un paramètre de type querystring. Nous l'intégrerons directement dans l'URL. Par exemple: /Store/Details/5.

ASP.NET MVC nous permet de le faire facilement sans avoir à configurer quoi que ce soit. La convention de routage par défaut d'ASP.NET MVC est de traiter le segment d'une URL après le nom d'action comme un paramètre appelé "ID". Si votre action a un paramètre appelé ID, alors ASP.NET MVC va automatiquement passer le segment d'URL pour vous en tant que paramètre.

      
//
// GET: /Store/Details/5
public string Details(int id)
 {
    string message = "Store.Details, ID = " + id;
 
    return message;
 }

			
Exécutez l'application et allez sur /Store/Details/5:

Récapitulons ce que nous avons fait jusqu'à présent :

Vous pouvez utiliser les discussions disponibles sur en http://mvcmusicstore.codeplex.com pour toutes questions ou tous commentaires.


Remerciements

Je tiens à remercier en Jon Galloway pour son aimable autorisation de traduire l'article, ainsi que ClaudeLELOUP pour la relecture orthographique.



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

Valid XHTML 1.0 TransitionalValid CSS!