Premiers Pas Avec ASP - Net MVC
Premiers Pas Avec ASP - Net MVC
Premiers Pas Avec ASP - Net MVC
NET MVC :
premiers pas
Version 1.0
James RAVAILLE
http://blogs.dotnet-france.com/jamesr
Dotnet France Association James RAVAILLE
2 ASP .NET MVC : premiers pas
Sommaire
1 Introduction ..................................................................................................................................... 3
1.1 Prsentation ............................................................................................................................ 3
1.2 Pr-requis ................................................................................................................................ 3
1.3 Prsentation du projet ............................................................................................................ 3
2 Cration du projet ASP .NET MVC ................................................................................................... 4
3 Cration du modle ......................................................................................................................... 7
3.1 Modlisation ............................................................................................................................ 7
3.2 Implmentation ....................................................................................................................... 7
4 Cration du contrleur .................................................................................................................. 13
4.1 Cration du contrleur Stagiaire ........................................................................................... 13
4.2 Cration du contrleur Cours ................................................................................................ 14
4.3 Test des contrleurs .............................................................................................................. 15
5 Cration des vues .......................................................................................................................... 17
5.1 Cration de la vue des stagiaires ........................................................................................... 17
5.1.1 Cration de la vue .......................................................................................................... 17
5.2 Cration de la vue des cours ................................................................................................. 22
5.2.1 Cration de la vue .......................................................................................................... 22
6 Cadre de lapplication .................................................................................................................... 24
6.1 Modification de la Master Page ............................................................................................ 24
6.1.1 Prsentation .................................................................................................................. 24
6.1.2 Modification du titre de lapplication ............................................................................ 24
6.1.3 Modification des lments du menu ............................................................................ 24
6.2 Modification de la page de dmarrage ................................................................................. 24
7 Excution de lapplication ............................................................................................................. 26
8 Conclusion ..................................................................................................................................... 28
Dotnet France Association James RAVAILLE
3 ASP .NET MVC : premiers pas
1 Introduction
1.1 Prsentation
Dans ce cours, nous allons raliser un projet, relativement simple, permettant de mettre en
pratique les notions abordes dans le cours de prsentation dASP .NET MVC. Nous aurons loccasion
de dfinir un modle, puis les contrleurs et vues de lapplication. Le modle cr ne sera pas
interfac avec une base de donnes, au travers des composants daccs aux donnes tels que Linq to
SQL ou Framework Entity. Pour acqurir le contenu de ce cours, vous ntes pas obligs de connatre
le fonctionnement et la mise en uvre de ces composants.
1.2 Pr-requis
Avant de lire ce cours, nous vous conseillons :
- De matriser la conception et le dveloppement dapplications Web avec la technologie ASP
.NET.
- Davoir lu le cours de prsentation dASP .NET MVC publi sur Dotnet-France.
Ce cours a t cris avec Visual Studio 2008 et ASP .NET MVC 2 Preview.
1.3 Prsentation du projet
Dans ce cours, nous allons raliser un projet, permettant dafficher des informations sur des
stagiaires et des cours quils suivent dans un centre de formation. Lapplication ASP .NET MVC que
nous allons crer permet doit permettre :
- Dafficher la liste de tous les stagiaires du centre de formation. Pour chacun dentre eux, elle
devra permettre dafficher la liste des cours qui lui sont dispenss.
- Dafficher la liste de tous les cours dispenss, tous stagiaires confondus. Elle devra permettre
pour chacun dentre eux, de fournir la liste des stagiaires qui le suivront.
Dotnet France Association James RAVAILLE
4 ASP .NET MVC : premiers pas
2 Cration du projet ASP .NET MVC
Aprs avoir lanc Visual Studio 2008, nous allons crer un projet Web de type ASP .NET MVC
2. Pour ce faire, dans la liste des modles de projet, nous slectionnons llment ASP .NET MVC 2
Web Application :
Aprs avoir cliqu sur le bouton OK, la fentre suivante apparat :
Dotnet France Association James RAVAILLE
5 ASP .NET MVC : premiers pas
Cette fentre nous propose de crer un projet de test pour lapplication ASP .NET MVC que
nous crons. Nous allons refuser cette proposition, car les tests dapplications MVC feront lobjet
dun autre cours, spcialis sur ce sujet. Nous cliquons sur le bouton OK et notre projet est cr.
Dans lexplorateur de solution, nous pouvons observer la structure suivante :
Dans ce projet, nous pouvons observer que chaque partie du modle MVC correspond un
dossier spcifique automatiquement cr :
- Models : permet de dfinir des classes constituant un modle propre lapplication.
- Controllers : permet de dfinir les contrleurs de lapplication.
- Views : permet de dfinir les vues (pages ASPX et contrles utilisateurs Web).
Nous pouvons aussi nous rendre compte que chaque vue du modle est une page ASPX
diffrente des pages ASPX que nous tions habitus crer :
- Elles ne contiennent pas de classe darrire plan (classe code-behind). En effet, ces pages
sont directement lies un contrleur appropri qui se chargera dexcuter les actions
demandes par lutilisateur.
Dotnet France Association James RAVAILLE
6 ASP .NET MVC : premiers pas
- Elles drivent non pas de classe System.Web.UI.Page, mais de la classe
System.Web.Mvc.ViewPage.
Nous pouvons aussi observer que deux autres dossiers sont crs :
- Le dossier Content qui contient les fichiers css de lapplication.
- Le dossier Scripts qui contient des librairies Jquery, qui permettront de mettre en uvre
Jquery dans notre application. Nous ne traiterons pas de ces aspects dans ce cours, car celui-
ci fer lobjet dun autre cours, spcialis sur ce sujet.
La page Default.aspx est le point dentre de lapplication.
On remarque aussi la prsence du fichier global.asax , dont le code est le suivant :
Lors du dmarrage de lapplication, deux routes sont dfinis :
- La premire permet de signifier au process ASP .NET MVC de ne pas prendre en compte les
requtes HTTP visant les handlers HTTP.
- La seconde permet de dfinir le modle principal des Url, permettant de demander
lexcuter dune action dun contrleur, avec optionnellement la prsence dun paramtre.
Le contrleur par dfaut est Home (HomeControler). La mthode (action) excute par
dfaut au sein des contrleurs est Index. La valeur du paramtre de cette mthode sil est
prsent est la valeur chane vide .
// C#
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);
}
}
Dotnet France Association James RAVAILLE
7 ASP .NET MVC : premiers pas
3 Cration du modle
Dans ce chapitre, nous allons crer le modle de notre application MVC.
3.1 Modlisation
Dans notre application, le modle sera constitu de deux classes :
- La classe Stagiaire : reprsente un stagiaire dun centre de formation.
- La classe Cours : reprsente les cours suivis par les stagiaires dans le centre de formation.
Voici le diagramme de classe de notre modle :
3.2 Implmentation
Voici limplmentation de la classe Cours :
Dotnet France Association James RAVAILLE
8 ASP .NET MVC : premiers pas
// C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using PremiereAppliMVC.Models.Personne;
namespace PremiereAppliMVC.Models.Formations
{
public class Cours
{
#region Attributs et Accesseurs
private int _Identifiant;
public int Identifiant
{
get { return _Identifiant; }
set { _Identifiant = value; }
}
private string _Libelle;
public string Libelle
{
get { return _Libelle; }
set { _Libelle = value; }
}
private int _NombreJours;
public int NombreJours
{
get { return _NombreJours; }
set { _NombreJours = value; }
}
private bool _ELearning;
public bool ELearning
{
get { return _ELearning; }
set { _ELearning = value; }
}
#endregion
#region Constructeurs
public Cours(int aIdentifiant, string aLibelle, int aNombreJours,
bool aEstELearning)
{
// Initialisation des attributs.
this.Identifiant = aIdentifiant;
this.Libelle = aLibelle;
this.NombreJours = aNombreJours;
this.ELearning = aEstELearning;
}
#endregion
Dotnet France Association James RAVAILLE
9 ASP .NET MVC : premiers pas
La classe CoursComparer a t cre afin de pouvoir comparer deux cours. Elle est utilise
pour enlever les doublons dune liste de cours. Dans le code ci-dessus, on remarque dans la
mthode GetListeInstances, lutilisation de la mthode Distinct pour supprimer les doublons de la
liste des cours fournis par une requte LINQ. Pour que cette mthode sexcute de manire
attendue, nous utilisons une instance de la classe CoursComparer.
Voici limplmentation de la classe Stagiaire :
// C#
#region Mthodes
public static List<Cours> GetListeInstances()
{
return (from oStagiaire in Stagiaire.ListeStagiaires
from oCours in oStagiaire.ListeCours
select oCours)
.Distinct(new CoursComparer())
.OrderBy(oCours => oCours.Identifiant)
.ToList();
}
public static Cours GetInstance(int aIdCours)
{
return (from cours in Cours.GetListeInstances()
where cours.Identifiant == aIdCours
select cours).FirstOrDefault();
}
public List<Stagiaire> GetListeStagiaires()
{
return (from oStagiaire in Stagiaire.ListeStagiaires
from oCours in oStagiaire.ListeCours
where oCours.Identifiant == this.Identifiant
select oStagiaire).ToList();
}
#endregion
}
public class CoursComparer : IEqualityComparer<Cours>
{
#region IEqualityComparer<Cours> Membres
public bool Equals(Cours x, Cours y)
{
return x.Identifiant == y.Identifiant;
}
public int GetHashCode(Cours obj)
{
return obj.Identifiant;
}
#endregion
}
}
Dotnet France Association James RAVAILLE
10 ASP .NET MVC : premiers pas
// C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using PremiereAppliMVC.Models.Formations;
namespace PremiereAppliMVC.Models.Personne
{
public class Stagiaire
{
#region Attributs et Accesseurs
private int _Identifiant;
public int Identifiant
{
get { return _Identifiant; }
set { _Identifiant = value; }
}
private string _Nom;
public string Nom
{
get { return _Nom; }
set { _Nom = value; }
}
private string _Prenom;
public string Prenom
{
get { return _Prenom; }
set { _Prenom = value; }
}
private List<Cours> _ListeCours;
public List<Cours> ListeCours
{
get { return _ListeCours; }
set { _ListeCours = value; }
}
Dotnet France Association James RAVAILLE
11 ASP .NET MVC : premiers pas
// C#
private static List<Stagiaire> _ListeStagiaires;
public static List<Stagiaire> ListeStagiaires
{
get
{
if (_ListeStagiaires == null)
{
_ListeStagiaires = new List<Stagiaire>()
{
new Stagiaire(1, "RAVAILLE", "James", new
List<Cours>()
{
new Cours(1, "Formation C# 3.0", 5,
true),
new Cours(2, "ASP .NET 3.5", 4, false),
new Cours(3, "Architecture
d'applications", 2, false),
new Cours(4, "Conception de bases de
donnes SQL Server", 3, true)
}),
new Stagiaire(2, "PAGES", "Anthony", new
List<Cours>()
{
new Cours(5, "Formation VB 9.0", 5,
true),
new Cours(2, "ASP .NET 3.5", 4, false),
new Cours(6, "Administration de bases de
donnes SQL Server", 5, false)
}),
new Stagiaire(3, "DOLLON", "Julien", new
List<Cours>()
{
new Cours(7, "Windows Presentation
Foundation", 5, true),
new Cours(8, "Silverlight", 2, true),
new Cours(9, ".NET RIA Services", 3,
false),
new Cours(10, "MOOS 2007", 5, false)
}),
new Stagiaire(4, "VERGNAULT", "Bertrand",new
List<Cours>()
{
new Cours(7, "Windows Presentation
Foundation", 5, true),
new Cours(1, "Formation C# 3.0", 5,
false),
new Cours(6, "Administration de bases de
donnes SQL Server", 5, false)
})
};
}
return _ListeStagiaires;
}
}
#endregion
Dotnet France Association James RAVAILLE
12 ASP .NET MVC : premiers pas
Le projet ASP .NET MVC que nous crons, ne va pas grer les donnes contenues dans une
base de donnes. Le modle va fournir les donnes sous forme dun bouchon de donnes . Pour
crer ce bouchon, nous avons cr dans la classe Stagiaire un accesseur en lecture seule nomm
ListeStagiaires de type List<Stagiaire>, avec son attribut. Cet accesseur construit la liste des stagiaires
lorsquil est appel la premire fois. Lors des appels suivants, cette mme liste est renvoye.
// C#
#region Constructeurs
public Stagiaire(int aIdentifiant, string aNom, string
aPrenom)
{
// Initialisation des attributs.
this.Identifiant = aIdentifiant;
this.Nom = aNom;
this.Prenom = aPrenom;
this.ListeCours = new List<Cours>();
}
public Stagiaire(int aIdentifiant, string aNom, string
aPrenom, List<Cours> aListeFormations)
: this(aIdentifiant, aNom, aPrenom)
{
// Initialisation des attributs.
this.ListeCours = aListeFormations;
}
#endregion
#region Mthodes
public static Stagiaire GetInstance(int aIdentifiant)
{
return (from oStagiaire in ListeStagiaires
where oStagiaire.Identifiant == aIdentifiant
select oStagiaire).FirstOrDefault();
}
#endregion
}
}
Dotnet France Association James RAVAILLE
13 ASP .NET MVC : premiers pas
4 Cration du contrleur
Dans ce chapitre, nous allons crer les contrleurs de notre application MVC. Nous allons
crer deux contrleurs :
- Un contrleur nomm Stagiaire, implment dans la classe StagiaireController.
- Un contrleur nomm Cours, implment dans la classe CoursController.
Tous les contrleurs de notre application ASP .NET MVC sont contenus dans le rpertoire
Controllers situ la racine de lapplication.
4.1 Cration du contrleur Stagiaire
Pour crer le contrleur Stagiaire, nous allons afficher le menu contextuel sur le rpertoire
Controllers situ la racine de notre projet, cliquer sur litem Ajouter puis Controller. La fentre
suivante apparat :
Nous saisissons le nom de notre contrleur, par dfaut suffix par Controller, et nous ne
cochons pas la case cocher Ajouter des mthodes daction pour la cration, mise jour,
dtail . Puis nous validons et nous obtenons une classe avec une mthode dont limplmentation
est la suivante :
Cette mthode retourne simplement la vue laquelle cette mthode (action) est associe.
Nous allons la modifier, afin quelle rponde aux besoins suivants :
- Demander au modle dobtenir la liste de tous les stagiaires.
- Dobtenir la liste des stagiaires dun cours particulier.
Pour ce faire, nous allons ajouter un paramtre de type int (type de lattribut Identifiant de la
classe Stagiaire), qui sera nullable. De cette manire, si lors de lexcution de cette mthode une
valeur est fournie pour ce paramtre, alors la vue attache cette mthode affichera la liste des
// C#
public ActionResult Index()
{
return View();
}
Dotnet France Association James RAVAILLE
14 ASP .NET MVC : premiers pas
stagiaires du cours identifi par cette valeur. Le cas chant, la liste de tous les stagiaires sera
affiche. Nous obtenons donc le code suivant :
4.2 Cration du contrleur Cours
De la mme manire que pour le contrleur Stagiaire, nous crons le contrleur Cours :
Nous validons et nous obtenons une classe avec une mthode dont limplmentation est la
suivante :
De la mme manire que pour le contrleur Stagiaire, la mthode (action) Index doit tre
capable de retourner la liste de tous les cours, ainsi que la liste des cours dun stagiaire. Pour ce faire,
nous modifions limplmentation de la mthode Index :
// C#
public ActionResult Index()
{
return View();
}
// C#
public ActionResult Index(int? aIdentifiantCours)
{
List<Stagiaire> oListeStagiaires = null;
if (aIdentifiantCours.HasValue)
{
Cours oCours = Cours.GetInstance(aIdentifiantCours.Value);
oListeStagiaires = oCours.GetListeStagiaires();
}
else
{
oListeStagiaires = Stagiaire.ListeStagiaires;
}
return View(oListeStagiaires);
}
Dotnet France Association James RAVAILLE
15 ASP .NET MVC : premiers pas
4.3 Test des contrleurs
Pour le moment, nous navons pas cr les vues correspondant aux mthodes (actions) de
nos deux contrleurs. Nous allons donc crer une mthode (action) spcifique, dans le sens o elle
nest pas rattache la vue, puis lexcuter.
Dans le contrleur Stagiaire, nous allons ajouter une mthode nomme
AfficherListeStagiaires, dont limplmentation est la suivante :
Pour excuter ce contrleur, nous allons ouvrir un navigateur Web et excuter lURL
suivante :
http://localhost:49705/Stagiaire/AfficherListeStagiaires
Et nous obtenons le rsultat suivant :
// C#
public void AfficherListeStagiaires()
{
Response.Write("Vous avez excutez l'action Tester du contrleur
StagiaireController.");
Response.Write("<br /><br />");
Response.Write("Voici la liste des stagiaires : ");
Response.Write("<ul>");
foreach (Stagiaire oStagiaire in Stagiaire.GetListeInstances())
{
Response.Write("<li>" + oStagiaire.Nom + " " + oStagiaire.Prenom
+ "</li>");
}
Response.Write("</ul>");
}
// C#
public ActionResult Index(int? aIdentifiantStagiaire)
{
List<Cours> oListeCours = null;
if (aIdentifiantStagiaire.HasValue)
{
oListeCours =
Stagiaire.GetInstance(aIdentifiantStagiaire.Value).ListeCours;
}
else
{
oListeCours = Cours.GetListeInstances();
}
return View(oListeCours);
}
Url racine de lapplication Contrleur Action
Dotnet France Association James RAVAILLE
16 ASP .NET MVC : premiers pas
Dotnet France Association James RAVAILLE
17 ASP .NET MVC : premiers pas
5 Cration des vues
5.1 Cration de la vue des stagiaires
La vue des stagiaires doit permettre dafficher la liste de tous les stagiaires du centre de
formation. Pour chacun dentre eux, elle devra permettre dafficher la liste des cours qui lui sont
dispenss.
5.1.1 Cration de la vue
Visual Studio propose de manire de crer une vue :
- Soit via le menu contextuel du rpertoire Views dans lexplorateur de solution.
- Soit directement partir dune mthode (action) du contrleur. Dans notre projet, nous
utiliserons cette mthode pour crer notre vue de stagiaires :
La fentre suivante apparat alors :
Dotnet France Association James RAVAILLE
18 ASP .NET MVC : premiers pas
Cette fentre demande les informations suivantes :
- Nom de la vue : nom de la page ASP .NET MVC. Nom donnons le mme nom que laction.
- Crer une vue partielle : si elle est coche, la vue crer sera un contrle utilisateur Web.
Sinon une page Web le cas chant. Nous crerons une page.
- Crer une vue fortement type : nous crons une vue pour grer les stagiaires de notre
modle. Alors nous slectionnons la classe Stagiaire, afin de signifier que la vue gre des
stagiaire.
- Comme contenu de la vue, nous choisissons llment List, afin de signifier que nous voulons
lister les stagiaires.
- Nous crons une page de contenu. Elle sexcutera au sein du contrle ContentPlaceHolder
identifi par MainContent de la page de lapplication Matre nomme Site.Master.
Lorsque nous validons, un rpertoire Stagiaire est cr dans le rpertoire Views. Ce
rpertoire contient la vue GestionStagiaires.aspx. Cette page sera alors excute et fournie
lutilisateur, chaque fois que laction Index sera invoque sur le contrleur CoursController. Cette
vue est une page ASP .NET MVC contenant le code suivant :
Dotnet France Association James RAVAILLE
19 ASP .NET MVC : premiers pas
// XHTML
<%@ Page Title="" Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<IEnumerable<SimpleMVC.Models.Personne.S
tagiaire>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent"
runat="server">
GestionStagiaires
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent"
runat="server">
<h2>GestionStagiaires</h2>
<table>
<tr>
<th></th>
<th>
Identifiant
</th>
<th>
Nom
</th>
<th>
Prenom
</th>
</tr>
<% foreach (var item in Model) { %>
<tr>
<td>
<%= Html.ActionLink("Edit", "Edit", new { /*
id=item.PrimaryKey */ }) %> |
<%= Html.ActionLink("Details", "Details", new { /*
id=item.PrimaryKey */ })%>
</td>
<td>
<%= Html.Encode(item.Identifiant) %>
</td>
<td>
<%= Html.Encode(item.Nom) %>
</td>
<td>
<%= Html.Encode(item.Prenom) %>
</td>
</tr>
<% } %>
</table>
<p>
<%= Html.ActionLink("Create New", "Create") %>
</p>
</asp:Content>
Dotnet France Association James RAVAILLE
20 ASP .NET MVC : premiers pas
Cette vue lensemble des informations sur les stagiaires : identifiant, nom, prnom, au
travers de lobjet Model, qui est aliment par le contrleur. Etant donn que nous ne nallons pas
modifier les stagiaires, mettons en commentaire :
- Le code correspondant la premire colonne, permettant de modifier et consulter le dtail
dun stagiaire :
o Lentte de la colonne :
o Le contenu de la colonne :
- Le code permettant de crer un stagiaire :
Nous reviendrons sur ces instructions en dtail dans le chapitre suivant. Ouvrons un
navigateur et excutons lURL permettant dexcuter cette vue :
// XHTML
<p>
<%= Html.ActionLink("Create New", "Create") %>
</p>
// XHTML
<td>
<%= Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) %>
|
<%= Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */
})%>
</td>
// XHTML
<th></th>
Dotnet France Association James RAVAILLE
21 ASP .NET MVC : premiers pas
Pour pouvoir accder la liste des cours de chacun des stagiaires, nous allons ajouter une
nouvelle colonne o chaque item permettra daccder la liste des cours de chaque stagiaire. Dans
cette vue, nous ajoutons le code marqu en gras ci-dessous :
Le rsultat est le suivant :
Le bloc de code ajout permet dajouter un lien hypertext, dont le libell sera Cours .
Lorsque lutilisateur cliquera sur ce lien, alors une requte HTTP sera envoye au serveur Web, dont
lURL est la suivante :
http://localhost:49705/Cours?aIdentifiantStagiaire=1
Cette URL permet dexcuter la mthode (action) Index (mthode par dfaut) en passant la
valeur 1 en paramtre.
Si nous souhaitons consulter la liste des cours de James RAVAILLE , nous cliquons sur le lien
Cours correspondant, et la page suivante apparat :
// XHTML
<tr>
<%--<td>
<%= Html.ActionLink("Edit", "Edit", new { /*
id=item.PrimaryKey */ }) %> |
<%= Html.ActionLink("Details", "Details", new { /*
id=item.PrimaryKey */ })%>
</td>--%>
<td>
<%= Html.Encode(item.Identifiant) %>
</td>
<td>
<%= Html.Encode(item.Nom) %>
</td>
<td>
<%= Html.Encode(item.Prenom) %>
</td>
<td>
<%= Html.ActionLink("Cours", "Index", "Cours", new
{ aIdentifiantStagiaire = item.Identifiant }, null)%>
</td>
</tr>
Dotnet France Association James RAVAILLE
22 ASP .NET MVC : premiers pas
5.2 Cration de la vue des cours
La vue des stagiaires doit permettre dafficher la liste de tous les cours dispenss, tous
stagiaires confondus. Elle devra permettre pour chacun dentre de fournir la liste des stagiaires qui le
suivront.
5.2.1 Cration de la vue
De manire analogue la cration de la vue des stagiaires, nous crons la vue des cours :
Nous apportons les mmes modifications que pour la cration de la vue des stagiaires :
- Mise en commentaire de la colonne permettant de modifier le contenu dun cours.
- Mise en commentaire du code permettant de crer un cours.
Dotnet France Association James RAVAILLE
23 ASP .NET MVC : premiers pas
Dotnet France Association James RAVAILLE
24 ASP .NET MVC : premiers pas
6 Cadre de lapplication
6.1 Modification de la Master Page
6.1.1 Prsentation
Dans lexemple de projet que fourni Microsoft, la Master Page dfinit la structure gnrale
de lapplication. Elle est contenue dans le rpertoire /Views/Shared de lapplication. Elle contient un
contrle de type ContentPlaceHolder, dans lequel sexcuteront les vues que nous avons cres.
6.1.2 Modification du titre de lapplication
Pour modifier le titre de lapplication, il suffit de se positionner dans la division identifie par
title, contenant le titre symbolis par llment XHTML H1. Nous le modifions de la manire
suivante :
6.1.3 Modification des lments du menu
Les lments du menu vont nous permettre daccder aux diffrentes pages de lapplication.
Nous allons ajouter deux lments de menu :
- Un permettant daccder la vue des stagiaires, afin dafficher la liste de tous les stagiaires
du centre de formation. Nous devons alors faire appel laction Index du contrleur
Stagiaire.
- Un permettant daccder la vue des cours, afin dafficher la liste de tous les cours proposs
par le centre de formation. Nous devons alors faire appel laction Index du contrleur
Cours.
Html.ActionLink
Le menu est mis en forme au travers de la feuille de style CSS/Content/Site.css.
6.2 Modification de la page de dmarrage
La page de dmarrage de lapplication correspond la vue Index.aspx contenue dans le
rpertoire /Views/Home de lapplication. Nous modifions son contenu afin dobtenir le bloc de code
suivant :
// XHTML
<ul id="menu">
<%--<li><%= Html.ActionLink("Home", "Index", "Home")%></li>
<li><%= Html.ActionLink("About", "About", "Home")%></li>--%>
<li><%= Html.ActionLink("Stagiaire", "Index", "Stagiaire")%></li>
<li><%= Html.ActionLink("Cours", "Index", "Cours")%></li>
</ul>
Dotnet France Association James RAVAILLE
25 ASP .NET MVC : premiers pas
Linstruction Html.Encode(ViewData["Message"]) rcupre le message dfini dans la
mthode (action) Index du contrleur Home, dont le bloc de code est le suivant :
// XHTML
public ActionResult Index()
{
ViewData["Message"] = "Gestion d'un centre de formation";
return View();
}
// XHTML
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent"
runat="server">
Page de dmarrage
</asp:Content>
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent"
runat="server">
<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<p>
Simple dmonstration de la cration d'une application ASP .NET
MVC.
</p>
</asp:Content>
Dotnet France Association James RAVAILLE
26 ASP .NET MVC : premiers pas
7 Excution de lapplication
Dans notre application, la page Default.aspx est la seule page que nous pouvons excuter
directement, sans avoir passer par un contrleur. Les vues ne peuvent tre excutes directement.
Pour excuter la page Default.aspx, dans la fentre Explorateur de solutions de Visual Studio,
affichons le menu contextuel sur ce fichier et cliquons sur litem Afficher dans le navigateur . La
page suivante apparat :
Lorsquon clique sur llment du menu Stagiaire, la page suivante apparat :
Puis, si on clique un lien hypertext Cours du stagiaire James RAVAILLE , la page suivante
apparat :
Dotnet France Association James RAVAILLE
27 ASP .NET MVC : premiers pas
Enfin, il est possible de consulter la liste des stagiaires dune formation (sous-ensemble de
stagiaires du centre de formation), en cliquant sur le lien Stagiaires du cours Formation C# 3.0 :
Dotnet France Association James RAVAILLE
28 ASP .NET MVC : premiers pas
8 Conclusion
Le but de ce cours est de vous montrer en quoi consiste un simple modle, de simples vues
et contrleurs dune application ASP .NET MVC, de manire mettre en pratique les concepts vus
dans le chapitre de prsentation du modle ASP .NET MVC.
Ces premiers pas dans ASP .NET MVC ne sont pas suffisants pour en explorer tous les
concepts, et tre autonome. Les chapitres suivants publis sur Dotnet-France concernant ASP .NET
MVC permettront de dtailler chacun de ces concepts.