Introduction 1. Introduction 11 2. La plateforme de développement web de Microsoft 11 3. Définition du modèle de programmation MVC 14 4. L'historique d'asp.net MVC 17 4.1 ASP.NET MVC 1 (2008) 17 4.2 ASP.NET MVC 2 (2010) 17 4.3 ASP.NET MVC 3 (2011) 18 4.4 ASP.NET MVC 4 (2012) 18 S'outiller pour ASP.NET MVC 1. Préparation de l'environnement de développement 19 2. Les paquets NuGet 21 3. Débuter avec les modèles de projet ASP.NET MVC 4 25 4. Conclusion 35 Vue d'ensemble 1. Introduction 37 2. Présentation du paradigme 37 1/11
3. Le modèle 43 4. La vue 45 4.1 Le dossier Shared 45 4.2 Un fichier de mise en page partagée 46 4.3 La syntaxe Razor 49 5. Le contrôleur 54 5.1 Présentation 54 5.2 Les attributs 56 6. Conclusion 59 Modèles et formulaires 1. Introduction 61 2. Expression d'un cas métier concret 61 3. Conception de formulaires 65 3.1 Comment choisir entre le verbe GET et le verbe POST 65 3.2 Débuter dans l'écriture de formulaires 69 3.3 La liaison de données 76 3.3.1 Présentation 76 3.3.2 Extensibilité 78 3.4 Génération automatisée de code 81 4. Annotation d'un modèle pour l'affichage et la validation 83 4.1 Les attributs d'affichage 84 4.2 Les attributs de validation standard 87 4.3 Les attributs de validation ASP.NET MVC 90 2/11
4.4 Localisation des annotations 92 4.5 Création d'un attribut de validation personnalisé 94 4.6 Traitement de la validation dans le contrôleur 97 4.7 ASP.NET MVC et les fournisseurs de métadonnées 99 5. Conclusion 101 Conception de vues 1. Introduction 103 2. Les moteurs de vue 105 2.1 Fonctionnement d'un moteur de vue 105 2.2 Configurer un moteur de vue pour ASP.NET MVC 107 2.3 Les moteurs de vue alternatifs 112 3. Tour d'horizon de Razor 114 3.1 Au cœur du fonctionnement de Razor 115 3.2 La syntaxe de Razor 118 3.2.1 Les instructions uniques 118 3.2.2 Les blocs de code 119 3.2.3 Les structures conditionnelles 119 3.2.4 Lever l'ambiguïté entre code et contenu statique 120 3.2.5 Les commentaires 123 3.3 L'environnement de Razor avec ASP.NET MVC 124 4. Tirer parti de la classe HtmlHelper 126 4.1 Explication 127 4.2 Les HTML helpers existants 128 4.2.1 Affichage et édition 128 4.2.2 Des équivalents génériques 128 4.2.3 Spécifier des attributs HTML 130 4.3 Les modèles d'affichage et d'édition 131 3/11
4.3.1 Présentation 131 4.3.2 Une vue personnalisée associée à une classe 134 5. Extensibilité : créer ses propres méthodes 136 5.1 Avec le mot-clé @helper 136 5.1.1 Pour la vue courante 136 5.1.2 Pour toutes les vues 138 5.2 Avec les templated delegates 141 5.2.1 Pour la vue courante 141 5.2.2 Pour toutes les vues 141 5.3 Étendre la classe HtmlHelper 143 6. Les modes d'affichage 145 6.1 Mode d'affichage mobile 147 6.2 Modes d'affichage personnalisés 148 7. Conclusion 150 Le routage 1. Introduction 153 2. Définition d'url intelligible et optimisation pour les moteurs de recherche 154 3. La sélection d'une route au cœur d'asp.net 156 3.1 Gestionnaires HTTP et modules HTTP 157 3.2 Cycle de la requête 161 3.3 Résolution d'une route ASP.NET MVC 164 4. Définition de routes 169 4.1 Des paramètres dans les routes 170 4.1.1 Valeurs par défaut 171 4.1.2 Paramètres optionnels 173 4/11
4.1.3 Définir plusieurs paramètres dans un segment 175 4.1.4 Paramètres de requête, querystring 178 4.2 Utilisation du routage pour rétro-générer une URL 178 4.3 Ajout de contraintes sur une route 183 4.4 Router vers un fichier existant physiquement 186 4.5 Ignorer des routes 188 4.6 Des routes pour des pages WebForms 190 4.7 Lier une route à un ou plusieurs espaces de noms 192 5. Déboguer des routes 193 6. Étendre le mécanisme de routage 196 7. Conclusion 199 Utilisation avancée des contrôleurs 1. Introduction 201 2. Le cycle de vie d'un contrôleur 201 2.1 La fabrication d'un contrôleur 202 2.2 La gestion de l'état de session 208 2.3 La libération des ressources 209 2.4 Les classes de base d'un contrôleur 210 2.5 La sélection d'une action 211 2.6 L'exécution d'une action 215 3. Le retour d'exécution d'une action 218 3.1 EmptyResult 221 3.2 HttpStatusCodeResult 222 3.3 RedirectResult 223 3.4 RedirectToRouteResult 224 3.5 JavascriptResult 225 5/11
3.6 JsonResult 226 3.7 FileResult 228 3.8 ViewResultBase 229 3.9 Type de résultat personnalisé 230 4. Les filtres d'action 232 5. Écrire des contrôleurs asynchrones 238 5.1 Fonctionnement des contrôleurs synchrones 238 5.2 Fonctionnement des contrôleurs asynchrones 239 5.3 Mise en œuvre 241 6. Conclusion 243 JavaScript et jquery 1. Introduction 245 2. Des pages interactives, jquery à l'appui 246 2.1 Présentation de jquery 246 2.1.1 Une compatibilité des navigateurs 247 2.1.2 Découplage de l'html et du JavaScript 248 2.2 La manipulation du DOM : les sélecteurs 250 2.3 Les événements 254 2.3.1 S'abonner et se désabonner 254 2.3.2 S'abonner au bon moment 256 2.4 Étendre jquery 257 2.5 Les attributs de données HTML 5 261 3. Des pages agréables avec de l'ajax 265 3.1 Des appels en lecture avec jquery 265 3.2 Des appels en lecture avec System.Web.Mvc.AjaxHelper 269 3.3 La soumission de formulaires en Ajax 270 6/11
3.3.1 Avec jquery 272 3.3.2 Avec AjaxHelper 274 4. Les validations client 275 4.1 jquery Validate et Helpers ASP.NET MVC en action 275 4.2 IClientValidatable, des validations personnalisées côté client 278 5. Conclusion 281 Optimisations et performances 1. Introduction 283 2. Utiliser les systèmes de cache 284 2.1 Côté serveur : cacher des données 284 2.1.1 Niveau requête 284 2.1.2 Niveau utilisateur 286 2.1.3 Niveau application 288 2.2 Côté serveur : cacher du HTML 292 2.2.1 Fonctionnement 292 2.2.2 Localiser les créations de cache : client/serveur 294 2.2.3 Créer un profil d'outputcache pour toutes les actions 296 2.2.4 OutputCache et les autorisations 297 2.2.5 Cacher des parties de page 297 2.3 Côté client : nouveau cache 301 2.3.1 Le cache de résultats de requête 301 2.3.2 Le cache en mémoire 301 2.3.3 Le cache applicatif 301 3. Organisation de la page web 305 3.1 Où placer les scripts JavaScript? 305 3.2 Instrumenter les performances 307 3.2.1 Tester sur différentes versions de navigateurs 307 7/11
3.2.2 Tester localement 309 3.3 Des mots-clés judicieux 312 4. Utiliser les bundles 313 4.1 Mettre en place un bundle 314 4.2 Utiliser un CDN 316 4.3 Créer des transformations personnalisées 318 5. Conclusion 320 Sécurité 1. Introduction 321 2. Gestion de l'authentification 322 2.1 Utilisation du SimpleMembership 322 2.1.1 ASP.NET 2.0 et les fournisseurs Membership 322 2.1.2 Intégration de SimpleMembership 323 2.1.3 Fonctionnement de SimpleMembership 324 2.1.4 WebSecurity 326 2.2 Connexion à un fournisseur OpenId et OAuth 328 3. Les menaces qui pèsent sur une application ASP.NET MVC 334 3.1 Introduction 334 3.2 Les en-têtes de requêtes 334 3.3 Le Cross-Site Scripting 336 3.3.1 Assainir les entrées 339 3.3.2 Assainir les sorties 340 3.4 Le Cross-Site Request Forgery 343 3.5 L'Over Posting 346 4. Conclusion 349 8/11
Exposition de données au travers des Web API 1. Introduction 351 2. Principes de base de conception 352 2.1 L'exposition de données 352 2.2 Le type des données 353 2.3 Le modèle HTTP 354 2.4 Travailler avec Fiddler 357 3. Similitudes avec le modèle ASP.NET MVC 359 3.1 La création d'un projet 360 3.2 La définition des routes 362 3.3 La création d'un contrôleur 365 3.4 La gestion des erreurs 371 3.5 La liaison de données 375 3.6 Les formats de données 379 4. Utilisation d'odata 382 4.1 La présentation du protocole 383 4.2 L exposition de données 384 5. Déploiement d'une solution 387 5.1 La génération de documentation 387 5.2 L hébergement autonome 390 6. Conclusion 392 Introduction aux applications monopages 1. Introduction 393 9/11
2. Présentation 394 3. Construction d'une application monopage 395 3.1 L'utilisation des Web API 395 3.2 Librairies utilisées 398 3.2.1 Knockout 398 3.2.2 Changements d'url 401 3.2.3 AngularJS 403 4. Conclusion 406 ASP.NET MVC avancé 1. Introduction 407 2. Les modèles de vues 408 2.1 Approche basique 408 2.2 Approche par modèles de vues 411 2.3 Utilisation d Automapper 415 3. Internationalisation d'une application 421 4. Injection de dépendances 426 4.1 Écrire un contrôleur compatible avec l'injection de dépendances 430 4.2 Configurer un conteneur d'inversion de contrôle 431 4.3 Le cœur de l'injection de dépendances dans ASP.NET MVC 434 4.4 La localisation de services 437 5. Écriture de tests unitaires 439 5.1 Tester des routes 440 5.2 Tester des contrôleurs 444 10/11
5.3 Tester des filtres 447 6. Génération de code automatisée 448 7. Conclusion 452 Déploiement 1. Introduction 455 2. Les éléments à déployer 456 3. Déploiement vers un serveur IIS 457 4. Déploiement vers Windows Azure 468 5. Conclusion 471 Index 473 11/11