Structure des répertoires du projet
Le dossier App_Start contient les confiugrations exécutées au démarrage de l'application.
Les ressources CSS et les images sont généralement placées dans le dossier Content.
Les contrôleurs, modèles et vues résident respectivement dans Controllers, Models et Views.
Les fichiers JavaScript et les bibliothèques tierces se trouvent dans Scripts.
Le fichier favicon.ico définit l'icône du site web.
Global.asax gère les événements du cycle de vie de l'application, comme le démarrage et l'arrêt.
La gestion des dépendances NuGet est confiugrée via packages.config.
Startup.cs initialise les services au démarrage, notamment pour l'authentification OWIN.
Les paramètres fondamentaux du site sont définis dans Web.config.
Configuration du démarrage dans Global.asax
La méthode Application_Start exécute plusieurs initialisations cruciales :
AreaRegistration.RegisterAllAreas() enregistre toutes les zones de l'application. Les zones permettent de modulariser un projet MVC en sections logiques, chacune pouvant contenir ses propres contrôleurs, vues et modèles.
FilterConfig.RegisterGlobalFilters() initialise le conteneur de filtres globaux. Les filtres interceptent les actions des contrôleurs pour effectuer des opérations transversales comme la gestion des erreurs ou l'autorisation. On les implémente en créant des classes dérivées de FilterAttribute.
RouteConfig.RegisterRoutes() configure le conteneur des routes. Les routes définissent comment les URLs sont mappées vers les actions des contrôleurs. Cette configuration inclut les routes ignorées, les itinéraires personnalisés et les valeurs par défaut. Les personnalisations avancées se font via des dérivés de RouteBase.
BundleConfig.RegisterBundles() initialise les paquets de ressources. Les bundles permettent de combiner et minifier des fichiers JavaScript et CSS pour optimiser les performances. On y ajoute principalement des instances de ScriptBundle et StyleBundle.
Point d'entrée Startup.cs
L'attribut [assembly: OwinStartup] marque une classe comme point de démarrage OWIN. La méthode ConfigureAuth à l'intérieur de cette classe configure typiquement les options d'authentification.
Attributs de validation des modèles
Les attributs suivants appliquent des règles de validation sur les propriétés du modèle :
[Required]garantit qu'une propriété n'est pas nulle.[StringLength]impose une longueur maximale pour une chaîne de caractères.[Range]restreint une valeur numérique à un intervalle donné.[RegularExpression]vérifie qu'une valeur correspond à un motif spécifique.[Compare]s'assure que deux propriétés ont la même valeur.[EmailAddress]valide le format d'une adresse e-mail.
Des attributs comme [DataType] et [Display] contrôlent l'affichage et le type des données dans les formulaires.
Exemples de configuration des bundles
// Bundle pour jQuery, incluant toutes les versions correspondantes
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
// Bundle pour la validation jQuery, capturant tous les fichiers correspondants
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
// Bundle pour Bootstrap et sa dépendance respond.js
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
"~/Scripts/bootstrap.js",
"~/Scripts/respond.js"));
Définition d'un filtre global
public class FiltreConfiguration
{
public static void EnregistreFiltresGlobaux(GlobalFilterCollection collectionFiltres)
{
collectionFiltres.Add(new HandleErrorAttribute());
}
}
Configuration des routes
// Ignorer les requêtes pour les ressources .axd
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Route par défaut
routes.MapRoute(
name: "ParDefaut",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Accueil", action = "Index", id = UrlParameter.Optional }
);
Cette route par défaut mappe une URL de la forme /Controller/Action/id. Le contrôleur "Accueil" et l'action "Index" sont utilisés lorsque ces segments sont absents de l'URL.