10
Comprendre les modèles, vues et contrôleurs par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND) Date de publication : mai 2009 Dernière mise à jour : Confus à propos des Modèles, Vues et Contrôleurs? Dans ce tutoriel, Stephen Walther vous présente les différentes parties d'une application ASP.Net MVC.

Mvc Understanding Models Views Controllers

Embed Size (px)

DESCRIPTION

merci

Citation preview

  • Comprendre les modles, vues et contrleurs

    par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND)

    Date de publication : mai 2009

    Dernire mise jour :

    Confus propos des Modles, Vues et Contrleurs? Dans ce tutoriel, Stephen Walther vousprsente les diffrentes parties d'une application ASP.Net MVC.

  • Comprendre les modles, vues et contrleurs par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND)

    - 2 -Copyright 2009 - Equipe dotnet. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 Ede dommages et intrets. Droits de diffusion permanents accords developpez LLC.

    http://dotnet.developpez.com/mvc/mvc-understanding-models-views-controllers/

    Traduction.....................................................................................................................................................................3Introduction...................................................................................................................................................................3L'exemple d'application ASP.Net MVC........................................................................................................................ 3Une URL n'est pas gale une Page........................................................................................................................ 7Comprendre le routage ASP.Net................................................................................................................................. 7Comprendre les contrleurs........................................................................................................................................ 8Comprendre les Vues.................................................................................................................................................. 9Comprendre les modles.............................................................................................................................................9Conclusion..................................................................................................................................................................10

  • Comprendre les modles, vues et contrleurs par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND)

    - 3 -Copyright 2009 - Equipe dotnet. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 Ede dommages et intrets. Droits de diffusion permanents accords developpez LLC.

    http://dotnet.developpez.com/mvc/mvc-understanding-models-views-controllers/

    Traduction

    Cet article est la traduction la plus fidle possible de l'article original : Understanding Models, Views, andControllers

    Introduction

    Ce tutoriel vous propose une prsentation succinte des modles, vues et contrleurs ASP.Net MVC. En d'autresmots, il explique la signification des lettres M, V et C de l'accronyme MVC.Aprs avoir lu ce tutoriel, vous devriez comprendre comment les diffrentes parties d'une application MVC marchentensemble. Vous devriez aussi comprendre comment l'architecture d'une application MVC diffre d'un application WebForms.

    L'exemple d'application ASP.Net MVC

    Le template par dfaut pour crer une application ASP.Net MVC inclut une application d'exemple extrment simplequi peut tre utilise pour comprendre les diffrentes parties d'une application MVC. Nous allons tirer avantage decet exemple au sein de cet article.Vous crez une nouvelle application MVC avec le template MVC en lanant Visual Studio 2008, en slectionnant lemenu Fichier > Nouveau projet. Dans la fentre de nouveau projet, choississez Application ASP.Net MVC. Cliquezalors sur le bouton OK.

    Lorsque vous crez une nouvelle application ASP.Net MVC, la fentre de dialogue de cration d'un projet de Testunitaire apparait. La fentre vous permet de crer un projet sppar dans votre solution, vous permettant de testervotre application ASP.Net MVC. Choisissez l'option "Non, ne pas crer de projet de test unitaire" et cliquez sur OK.

  • Comprendre les modles, vues et contrleurs par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND)

    - 4 -Copyright 2009 - Equipe dotnet. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 Ede dommages et intrets. Droits de diffusion permanents accords developpez LLC.

    http://dotnet.developpez.com/mvc/mvc-understanding-models-views-controllers/

    Aprs que la nouvelle application ASP.Net MVC soit cre, vous allez voir plus dossiers et fichiers dans la fentreExplorateur de Solution. En particulier, vous allez voir trois dossiers nomms Models, Views et Controllers. Commevous pouvez le deviner de par leurs noms, ces dossiers vont contenir nos modles, nos vues et nos contrleurs.Si vous dpliez le dossier Controllers, vous devriez voir un fichier nomm AccountController.cs et un fichier nommHomeController.cs. Si vous dpliez le dossier Views, vous devriez voir trois sous-dossiers nomms Account, Homeet Shared. Dans le dossier Home, vous devriez notamment trouver deux fichiers additionnels nomms About.aspxet Index.aspx. Ces fichiers reprsentent l'application d'exemple inclue avec le template ASP.Net MVC par dfaut.

  • Comprendre les modles, vues et contrleurs par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND)

    - 5 -Copyright 2009 - Equipe dotnet. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 Ede dommages et intrets. Droits de diffusion permanents accords developpez LLC.

    http://dotnet.developpez.com/mvc/mvc-understanding-models-views-controllers/

    Vous pouvez lancer l'application en cliquant sur le menu Debug => Commencer le deboggage ou alors en cliquantsur la touche F5.Lorsque vous lancez une application MVC pour la premire fois, la fentre de dialogue suivante apparait, vousrecommandant d'activer le mode debug. Cliquez alors sur OK pour voir l'application se lancer.

  • Comprendre les modles, vues et contrleurs par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND)

    - 6 -Copyright 2009 - Equipe dotnet. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 Ede dommages et intrets. Droits de diffusion permanents accords developpez LLC.

    http://dotnet.developpez.com/mvc/mvc-understanding-models-views-controllers/

    Lorsque vous lancez une application ASP.Net MVC, Visual Studio lance l'application dans votre navigateur Web.L'application d'exemple consiste en deux pages : la page Index et la page About. Lorsque l'application dmarrer pourla premire fois, la page Index apparait. Vous pouvez naviguer vers la page About en cliquant sur le lien en haut droit de la page.

    Notez les URLs dans la barre d'adresse de votre navigateur. Par exemple, lorsque vous cliquez sur le lien About,l'URL change pour devenir /Home/About.

  • Comprendre les modles, vues et contrleurs par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND)

    - 7 -Copyright 2009 - Equipe dotnet. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 Ede dommages et intrets. Droits de diffusion permanents accords developpez LLC.

    http://dotnet.developpez.com/mvc/mvc-understanding-models-views-controllers/

    Si vous fermez la fentre du navigateur et retournez sous Visual Studio, vous ne trouverez aucun fichier avec lechemin Home/About. Comment cela est-il possible?

    Une URL n'est pas gale une Page

    Lorsque vous construisez une application traditionnelle ASP.Net (Web Forms), il y a une correspondance un-un entreune URL et une page. Si vous demandez la pages SomePage.aspx au serveur, alors il doit forcment exister unepage sur le disque qui soit nomme SomePage.aspx. Si la page n'existe pas alors vous obtenez une magnifiqueerreur 404 Page Not Found.Au contraire donc, sur une application MVC, une URL correspondre une action contrleur (en lieu et place d'unepage sur le disque), il n'y a donc aucune correspondance entre l'URL que vous saisissez dans votre navigateur Webet les fichiers que vous trouvez dans votre applications.Dans une application traditionnelle ASP.Net, les requtes navigateurs sont mappes vers des pages. Au contraire,dans une application MVC, les requtes sont mappes des actions de contrleur. Ainsi, une application ASP.Netest dite "centre sur le contenu" (content-centric) alors qu'une application MVC est dite "centre logiquement" (logiccentric).

    Comprendre le routage ASP.Net

    Une requte navigateur est lie une action contrleur travers une fonctionnalit du framework ASP.Net nommle routage ASP.Net. Le routage ASP.Net est utilis par le framework MVC pour router les requtes vers les actionsdes contrleurs.Le routage ASP.Net utilise une table de routage pour grer les requtes entrantes. La table de route est cre lorsquevotre application dmarre pour la premire fois. Cette table est configure dans le fichier Global.asax. Voici le contenudu Global.asax par dfaut.

    Global.asaxusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.Web.Routing;

    namespace MvcApplication1{ // Note: For instructions on enabling IIS6 or IIS7 classic mode, // visit http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = "" } // Parameter defaults );

    }

    protected void Application_Start() { RegisterRoutes(RouteTable.Routes); } }}

    Lorsqu'une application MVC dmarre pour la premire fois, la mthode Application_Start() est appele. Cettemthode appelle alors la mthode RegisterRoutes() qui cr la table de routage.

  • Comprendre les modles, vues et contrleurs par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND)

    - 8 -Copyright 2009 - Equipe dotnet. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 Ede dommages et intrets. Droits de diffusion permanents accords developpez LLC.

    http://dotnet.developpez.com/mvc/mvc-understanding-models-views-controllers/

    La table de routage par dfaut consiste en une seule et unique route. Cette route par dfaut dcoupe toutes lesrequtes entrantes en trois segments (un segment URL est tout ce qui se trouve entre les slashs). Le premier segmentest mapp sur le nom du contrleur, le second sur le nom de l'action et le segment final est mapp sur un paramtrepass l'action et nomm Id.Par exemple, considrez l'URL suivante :/Product/Details/3Cette URL est parse en trois paramtres comme ceci :Controller = ProductAction = DetailsId = 3La route par dfaut dfinie dans le fichier Global.asax inclut des valeurs par dfaut pour les trois paramtres. Lecontrleur par dfaut est Home, l'action par dfaut est Index et la valeur par dfaut pour Id est une chaine vide. Avecces valeurs par dfaut, considrez l'URL suivante :/EmployeeCette URL est parse en trois paramtres comme ceci :Controller = EmployeeAction = IndexId = ??Enfin, si vous ouvrez une application MVC sans fournir aucune URL (par exemple http://localhost) alors l'URL estparse comme ceci :Controller = HomeAction = IndexId = ??La requte est route vers l'action Index() de la classe HomeController.

    Comprendre les contrleurs

    Un contrleur est responsable de contrler la faon dont un utilisateur interagi avec une application MVC. Uncontrleur contient la logique de contrle de flux pour une application MVC. Le contrleur dtermine quelle rponserenvoyer lorsque l'utilisateur fait une requte navigateur.Un contrleur est juste une classe (par exemple, une classe Visual Basic ou C#). L'exemple d'application MVC inclutun contrleur nomm HomeController.cs situ dans le dossier Controllers. Le contenu du fichier HomeController.csest le suivant :

    HomeController.csusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;

    namespace MvcApplication1.Controllers{ [HandleError] public class HomeController : Controller { public ActionResult Index() { ViewData["Title"] = "Home Page"; ViewData["Message"] = "Welcome to ASP.NET MVC!";

    return View(); }

    public ActionResult About() { ViewData["Title"] = "About Page";

    return View(); } }}

  • Comprendre les modles, vues et contrleurs par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND)

    - 9 -Copyright 2009 - Equipe dotnet. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 Ede dommages et intrets. Droits de diffusion permanents accords developpez LLC.

    http://dotnet.developpez.com/mvc/mvc-understanding-models-views-controllers/

    Notez que le contrleur a deux mthodes nommes Index() et About(). Ces deux mthodes correspondent aux deuxactions exposes par le contrleur. L'URL /Home/Index invoque la mthode HomeController.Index() et l'URL /Home/About invoque la mthode HomeController.About().Toute mthode publique d'un contrleur est automatiquement expose comme une action du contrleur. Vous devezfaire attention cela. Cela signifie que toute mthode publique d'un contrleur peut tre invoque directement parn'importe qui ayant accs Internet et entrant la bonne URL dans son navigateur.

    Comprendre les Vues

    Les deux action du contrleur exposes par la classe HomeController, Index() et About(), retournent toutes les deuxune vue. Une vue contient les balises HTML et le contenu, qui est envoy au navigateur. Une vue est quivalent une page lorsque l'ont travail dans une application ASP.Net MVC.Vous devez crer vos vues au bon endroit. L'actionHomeController.Index() retourne une vue situe dans le cheminsuivant :\Views\Home\Index.aspxL'action HomeController.About() retourne une vue situe dans le chemin suivant :\Views\Home\About.aspxEn gnral, si vous voulez retourner une vue pour une action d'un contrleur, alors vous devez crer un sous-dossierdans le dossier Views, avec le mme nom que le contrleur. Dans ce sous-dossier, vous devez crer un fichier aspxavec le mme nom que l'action du contrleur.

    About.aspx

    About Put content here.

    Si vous ignorez la premire ligne du code prcdent, la plupart du contenu d'une vue consiste en du simple codeHTML. Vous pouvez modifier le contenu d'une vue en saisissant simplement le code HTML que de ce que vousvoulez afficher.Une vue est trs similaire une page ASP.Net Web Forms. Une vue peut contenir du code HTML et des scripts. Vouspouvez crire les scripts dans votre langage de programmation .Net prfr (par exemple C# ou Visual Basic. Vousutilisez les scripts pour afficher du contenu dynamique tel que des donnes extraits d'une base.

    Comprendre les modles

    Nous avons discut des contrleurs et des vues. Le dernier sujet dont nous devons parler concerne donc les modles.Mais qu'est-ce que les modles MVC?Un modle MVC contient toute votre logique applicative qui n'est pas contenue dans une vue ou un contrleur. Lemodle devrait contenir toute la logique business de votre application, la logique de validation, et la logique d'accs la base de donnes. Par exemple, si vous utilisez Microsoft Entity Framework pour accder votre base de donnes,alors vous devriez crer votres classes Entity Framework (fichiers edmx) dans le rpertoire Models.Une vue devrait seulement contenir la logique lie la gnration de l'interface utilisateur. Un contrleur devraitseulement contenir le strict minimum de logique pour retourner la bonne vue ou rediriger l'utilisateur vers une autreaction (contrle de flux). Tout le reste devrait tre contenu dans le modle. En gnral, vous devriez n general, vousefforcer d'avoir des gros modles et des petits contrleurs. Les mthodes des contrleurs ne devraient contenir quetrs peu de lignes de code. Si une action contrleur devient trop grosse, alors vous devriez considrer sortir lalogique et l'inclure dans une nouvelle classe dans le dossier Models.

  • Comprendre les modles, vues et contrleurs par Louis-Guillaume MORAND (Traduction) (Page perso de Louis-Guillaume MORAND)

    - 10 -Copyright 2009 - Equipe dotnet. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 Ede dommages et intrets. Droits de diffusion permanents accords developpez LLC.

    http://dotnet.developpez.com/mvc/mvc-understanding-models-views-controllers/

    Conclusion

    Ce tutoriel vous a fourni un survol des diffrentes parties d'une application Web MVC. Vous avez appris commentle routage ASP.Net, lit les requtes navigateur entrantes vers des actions particulires. Vous avez appris commentles contrleurs orchestrent comment les vues sont retournes au navigateur. Enfin, vous avez appris comment lesmodles contiennent les logiques business, de validation et de base de donnes de votre application.

    SynopsisSommaireTraductionIntroductionL'exemple d'application ASP.Net MVCUne URL n'est pas gale une PageComprendre le routage ASP.NetComprendre les contrleursComprendre les VuesComprendre les modlesConclusion