Cours ASP Création du projet ASP .NET MVC, tutoriel & guide de travaux pratiques ASP en pdf.
Création du modèle
Dans ce chapitre, nous allons créer le modèle de notre application MVC.
Modélisation
Dans notre application, le modèle sera constitué de deux classes :
– La classe Stagiaire : représente un stagiaire d’un centre de formation.
– La classe Cours : représente les cours suivis par les stagiaires dans le centre de formation.
Voici le diagramme de classe de notre modèle :
Implémentation
Voici l’implémentation de la classe Cours :
// 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
// C#
#region Méthodes
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
}
}
La classe CoursComparer a été créée afin de pouvoir comparer deux cours. Elle est utilisée pour enlever les doublons d’une liste de cours. Dans le code ci-dessus, on remarque dans la méthode GetListeInstances, l’utilisation de la méthode Distinct pour supprimer les doublons de la liste des cours fournis par une requête LINQ. Pour que cette méthode s’exécute de manière attendue, nous utilisons une instance de la classe CoursComparer.
Voici l’implémentation de la classe Stagiaire :
// 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; }
}
// 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
données 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
données 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
données SQL Server », 5, false)
})
};
}
return _ListeStagiaires;
}
}
#endregion
// 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 Méthodes
public static Stagiaire GetInstance(int aIdentifiant)
{
return (from oStagiaire in ListeStagiaires
where oStagiaire.Identifiant == aIdentifiant
select oStagiaire).FirstOrDefault();
}
#endregion
}
}
Le projet ASP .NET MVC que nous créons, ne va pas gérer les données contenues dans une base de données. Le modèle va fournir les données sous forme d’un « bouchon de données ». Pour créer 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 lorsqu’il est appelé la première fois. Lors des appels suivants, cette même liste est renvoyée.
Création du contrôleur
Dans ce chapitre, nous allons créer les contrôleurs de notre application MVC. Nous allons créer deux contrôleurs :
– Un contrôleur nommé Stagiaire, implémenté dans la classe StagiaireController.
– Un contrôleur nommé Cours, implémenté dans la classe CoursController.
Tous les contrôleurs de notre application ASP .NET MVC sont contenus dans le répertoire Controllers situé à la racine de l’application.
Création du contrôleur Stagiaire
Pour créer le contrôleur Stagiaire, nous allons afficher le menu contextuel sur le répertoire Controllers situé à la racine de notre projet, cliquer sur l’item Ajouter puis Controller. La fenêtre suivante apparaît :
Nous saisissons le nom de notre contrôleur, par défaut suffixé par Controller, et nous ne cochons pas la case à cocher « Ajouter des méthodes d’action pour la création, mise à jour, détail ». Puis nous validons et nous obtenons une classe avec une méthode dont l’implémentation est la suivante :
// C#
public ActionResult Index()
{
return View();
}
Cette méthode retourne simplement la vue à laquelle cette méthode (action) est associée.
Nous allons la modifier, afin qu’elle réponde aux besoins suivants :
– Demander au modèle d’obtenir la liste de tous les stagiaires.
– D’obtenir la liste des stagiaires d’un cours particulier.
Pour ce faire, nous allons ajouter un paramètre de type int (type de l’attribut Identifiant de la classe Stagiaire), qui sera nullable. De cette manière, si lors de l’exécution de cette méthode une valeur est fournie pour ce paramètre, alors la vue attachée à cette méthode affichera la liste des stagiaires du cours identifié par cette valeur. Le cas échéant, la liste de tous les stagiaires sera affichée. Nous obtenons donc le code suivant :
// 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);
}
Création du contrôleur Cours
De la même manière que pour le contrôleur Stagiaire, nous créons le contrôleur Cours :
Nous validons et nous obtenons une classe avec une méthode dont l’implémentation est la suivante :
// C#
public ActionResult Index()
{
return View();
}
De la même manière que pour le contrôleur Stagiaire, la méthode (action) Index doit être capable de retourner la liste de tous les cours, ainsi que la liste des cours d’un stagiaire. Pour ce faire, nous modifions l’implémentation de la méthode Index :
// 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);
}
Test des contrôleurs
Pour le moment, nous n’avons pas créé les vues correspondant aux méthodes (actions) de nos deux contrôleurs. Nous allons donc créer une méthode (action) spécifique, dans le sens où elle n’est pas rattachée à la vue, puis l’exécuter.
1 Introduction
1.1 Présentation
1.2 Pré-requis
1.3 Présentation du projet
2 Création du projet ASP .NET MVC
3 Création du modèle
3.1 Modélisation
3.2 Implémentation
4 Création du contrôleur
4.1 Création du contrôleur Stagiaire
4.2 Création du contrôleur Cours
4.3 Test des contrôleurs
5 Création des vues
5.1 Création de la vue des stagiaires
5.1.1 Création de la vue
5.2 Création de la vue des cours
5.2.1 Création de la vue
6 Cadre de l’application
6.1 Modification de la Master Page
6.1.1 Présentation
6.1.2 Modification du titre de l’application
6.1.3 Modification des éléments du menu
6.2 Modification de la page de démarrage
7 Exécution de l’application
8 Conclusion
……….