Loïc Bar
Introduction à ASP.NET MVC
Dans cet article, vous découvrirez tout ce que vous devez savoir pour créer un site web à l’aide de la technologie ASP.NET MVC.
Par Loïc Bar publié le 10/05/2009 à 21:19, lu 6864 fois, 12 pages
 6 | Premier projet
ASP.NET MVC est vraiment très simple à prendre en main. Pour démarrer votre premier projet :
  • Ouvrez Visual Studio 2008
  • Fichier
  • Nouveau
  • Projet
  • Une nouvelle fenêtre apparait, sélectionnez ASP.NET MVC
     
    /content/bd5bd622-77d8-4a2e-bac9-34224c0ff0f3/image4.jpeg
     
  • Cliquez sur « Ok »
  • Une nouvelle fenêtre apparait pour savoir si vous voulez créer un projet pour tester votre application web. (cliquez « Ok » ou « Cancel » en fonction de se que vous voulez)
     
    /content/bd5bd622-77d8-4a2e-bac9-34224c0ff0f3/image5.jpeg
     
Une fois ceci fait, vous devriez avoir la même architecture que vu précédemment.
Pour bien commencer, supprimez :
  • AccountController.cs dans le dossier Controllers
  • Le dossier Account dans Views.
Si vous lancez le projet (Ctrl + F5) vous devriez avoir le résultat suivant :
 
/content/bd5bd622-77d8-4a2e-bac9-34224c0ff0f3/image6.png
 
Si vous cliquez sur « About », vous arriverez sur une nouvelle page. Celle-ci n’a rien de particulier mais observer les URLs :
 
/content/bd5bd622-77d8-4a2e-bac9-34224c0ff0f3/image7.jpeg
 
Elles sont remarquablement bien formées.
Regardons ce qui à du être fait pour en arriver à un résultat pareil.
Comme nous l’avons vu dans la partie du fonctionnement d’ASP.NET MVC, il y a un UrlRoutingModule qui va regarder la requête et va chercher s’il existe un pattern équivalent dans la liste des routes que vous avez défini dans le Global.asax. Celui-ci contient les éléments suivants :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Routing;

 

namespace THB_MVC

{

    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);

        }

    }

}

Il y a une routes définie ou plutôt deux. La première permet de dire à MVC de ne pas prendre en compte les fichiers .ashx. L’autre permet de définir le pattern principal. Celui-ci renvoi vers le contrôleur Home. Rendez-vous dans le fichier HomeController.cs dans le dossier Controllers :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

 

namespace THB_MVC.Controllers

{

    [HandleError]

    public class HomeController : Controller

    {

        public ActionResult Index()

        {

            ViewData["Message"] = "Welcome to ASP.NET MVC!";

 

            return View();

        }

 

        public ActionResult About()

        {

            return View();

        }

    }

}

Dans ce contrôleur il y a deux actions :
  • Index qui est celui par défaut
  • About qui est appelé lorsque le paramètre action de l’url est égale à « About ».
Ces deux méthodes renvoient une méthode « View ». Cette méthode va aller rechercher dans le dossier correspondant, la vue qui est attachée à l’action. Par exemple pour About, la méthode View va aller rechercher le fichier About.aspx dans Views/Home :

<% @ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

 

< asp : Content ID="aboutTitle" ContentPlaceHolderID="TitleContent" runat="server">

    About Us

</ asp : Content >

 

< asp : Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">

    <h2>About</h2>

    <p>

        Put content here.

    </p>

</ asp : Content >

On voit que cette page hérite de System.Web.Mvc.ViewPage. Il n’y a pas de code behind. Par contre, il y a un élément bien connu par les développeurs ASP.NET : la masterPage. En effet, nous remarquons dans le code qu’il existe une Master Page :

<% @ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

 

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

< html xmlns="http://www.w3.org/1999/xhtml">

< head runat="server">

    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>

    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

</ head >

 

< body >

    <div class="page">

 

        <div id="header">

            <div id="title">

                <h1>My MVC Application</h1>

            </div>

 

            <div id="logindisplay">

                <% Html.RenderPartial("LogOnUserControl"); %>

            </div>

 

            <div id="menucontainer">

 

                <ul id="menu">             

                    <li><%= Html.ActionLink("Home", "Index", "Home")%></li>

                    <li><%= Html.ActionLink("About", "About", "Home")%></li>

                </ul>

 

            </div>

        </div>

 

        <div id="main">

            <asp:ContentPlaceHolder ID="MainContent" runat="server" />

 

            <div id="footer">

            </div>

        </div>

    </div>

</ body >

</ html >

Nous remarquons pas mal d’éléments ici comme un contrôleur utilisateur (LogOnUserControl) ou encore des HtmlHelper :

< li > <% = Html.ActionLink("About", "About", "Home")%></li>

Cette ligne de code va gérer un lien vers l’action « About » du contrôleur « Home » avec le texte « About ».
Nous verrons tous ces éléments dans la suite de l’article.
 
» Démarrer une discussion
 
Discussion démarée par killscores le 18/05/2009 à 12:12, 1 commentaire(s).