IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

MVC Music Store


précédentsommairesuivant

III. 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.).

IV. 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… » :

Image non disponible

Cela fera apparaître la boite de dialogue « Add Controller ». Nommez votre contrôleur « HomeController » et cliquez sur le bouton Add.

Image non disponible

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

 
Sélectionnez
                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 :

  • changer la méthode de sorte qu'elle renvoie un string au lieu d'une ActionResult ;
  • changer l'instruction de retour pour renvoyer “Hello from Home?.

La méthode devrait maintenant ressembler à ceci :

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

V. 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 :

  • choisir Start Debugging dans le menu Debug ;
  • cliquer sur le bouton vert en forme de flèche dans la barre d'outils
Image non disponible
  • utiliser le raccourci clavier, F5.

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.

Image non disponible

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 :

Image non disponible

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.

VI. 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 :

  • une page listant les genres de musique de notre magasin ;
  • une page de navigation qui répertorie tous les albums de musique par genre ;
  • une page de détails qui affiche les informations d'un album spécifique.

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… » :

Image non disponible

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() :

 
Sélectionnez
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 :

  • /Store ;
  • /Store/Browse ;
  • /Store/Details.

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

Image non disponible

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.

 
Sélectionnez
//
// 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

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

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

Image non disponible

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.

 
Sélectionnez
//
// 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:

Image non disponible

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

  • nous avons créé un nouveau projet ASP.NET MVC dans Visual web Developer ;
  • nous avons parlé de la structure des dossiers de base d'une application ASP.NET MVC ;
  • nous avons appris à exécuter notre site web en utilisant le serveur de développement ASP.NET ;
  • nous avons créé deux classes contrôleur : un HomeController et un StoreController ;
  • nous avons ajouté deux actions à nos contrôleurs qui répondent à des requêtes URL et qui renvoient du texte dans le navigateur.

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


précédentsommairesuivant

Copyright © 2012 Jon Galloway. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.