ebook img

ASP.NET MVC et WEB API PDF

97 Pages·2015·3.07 MB·French
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview ASP.NET MVC et WEB API

1 Asp.Net MVC et WEB API I. MVC ......................................................................................................................................................... 4 1. « FROM SCRATCH » - DEMARRER AVEC UN PROJET ASP.NET VIDE................................................................................. 4 2. ROUTES ............................................................................................................................................................. 8 a. RouteConfig ................................................................................................................................................ 8 b. Attribut Route ............................................................................................................................................. 9 c. Area ........................................................................................................................................................... 10 d. Récupérer les informations de route ........................................................................................................ 11 3. CONTROLEURS ................................................................................................................................................... 12 a. « Action Result » ....................................................................................................................................... 12 b. Index ......................................................................................................................................................... 12 c. Détails ....................................................................................................................................................... 13 d. Create ....................................................................................................................................................... 13 e. Edit ............................................................................................................................................................ 14 f. Delete ........................................................................................................................................................ 14 g. Actions asynchrones ................................................................................................................................. 15 h. Actions Selectors ....................................................................................................................................... 15 i. Action filters ......................................................................................................................................... 16 j. Contrôleur Mvc comme Web Service ........................................................................................................ 17 4. VIEWS ............................................................................................................................................................. 20 a. _ViewStart ........................................................................................................................................... 22 b. _Layout (Master page/ Page de disposition) ....................................................................................... 22 @RenderSection() ...................................................................................................................................................... 23 c. Définir le modèle de la vue .................................................................................................................. 23 d. Html Helpers ........................................................................................................................................ 23 e. Code expressions pour insérer du C# dans le HTML .......................................................................... 25 Code blocks ................................................................................................................................................................ 25 f. Scripts .................................................................................................................................................. 25 g. SelectList .............................................................................................................................................. 26 h. Moteur de vue Aspx ............................................................................................................................. 26 i. Ajax Helpers ......................................................................................................................................... 26 Ajax Form ................................................................................................................................................................... 27 Ajax ActionLink........................................................................................................................................................... 28 5. VALIDATION ...................................................................................................................................................... 29 a. Data Annotations ................................................................................................................................. 29 b. IValidatableObject ............................................................................................................................... 31 c. Modifier le style des erreurs ................................................................................................................ 32 d. Validation côté « Client » avec jQuery Validation Plugin ................................................................... 32 6. SECURITE ..................................................................................................................................................... 33 a. Windows (Intranet) .............................................................................................................................. 33 b. « From scratch » - Sécurité « Forms » avec un projet Asp.Net vide .................................................... 34 Packages NuGet ......................................................................................................................................................... 34 Préparation ................................................................................................................................................................ 34 « IdentityConfig » (dossier « App_Start ») ............................................................................................................ 34 ApplicationUser..................................................................................................................................................... 36 Classe partielle « Startup » ................................................................................................................................... 37 Base de données ................................................................................................................................................... 38 2 Personnalisation des pages ................................................................................................................................... 38 Contrôleurs et ViewModels .................................................................................................................................. 39 Inscription (register) .................................................................................................................................................. 40 Connexion (Login) ...................................................................................................................................................... 43 Connexion «externe » avec Facebook, Google, Twitter ............................................................................................ 48 Facebook ............................................................................................................................................................... 48 Google ................................................................................................................................................................... 50 Twitter................................................................................................................................................................... 52 Code supplémentaire ............................................................................................................................................ 52 c. Autorisations (attribut « Authorize ») .................................................................................................. 55 ValidateAntiForgeryToken ......................................................................................................................................... 56 AntiXSS ....................................................................................................................................................................... 57 d. SSL ........................................................................................................................................................ 57 e. Projet Visual Studio 2012 ..................................................................................................................... 58 InitializeSimpleMembership et WebSecurity ............................................................................................................. 58 SimpleRoleProvider et SimpleMembershipProvider ................................................................................................. 59 Register ...................................................................................................................................................................... 60 Login .......................................................................................................................................................................... 60 7. LOCALISATION .............................................................................................................................................. 61 Dates et Monnaies........................................................................................................................................ 61 Resources ...................................................................................................................................................... 62 8. LESS ........................................................................................................................................................... 63 9. DEPENDENCY INJECTION (DI) .......................................................................................................................... 63 Avec Ninject ............................................................................................................................................................... 63 10. UPGRADE ................................................................................................................................................ 64 II. WEB API ................................................................................................................................................. 65 1. Web Api config ..................................................................................................................................... 65 2. Contrôleur Web Api ............................................................................................................................. 65 a. HTTP Status codes ............................................................................................................................................ 65 b. Ajout d’un contrôleur Web Api ........................................................................................................................ 65 c. Contrôleur Web API avec IhttpActionResult .................................................................................................... 66 d. Contrôleur Web API avec HttpResponseMessage ............................................................................................ 68 3. Attribut “Route” ................................................................................................................................... 71 4. Injection de dépendances .................................................................................................................... 71 Avec Ninject ............................................................................................................................................................... 71 5. Projet Client ......................................................................................................................................... 72 a. dataService JavaScript ...................................................................................................................................... 72 b. HttpClient ......................................................................................................................................................... 73 6. Cors ...................................................................................................................................................... 75 7. Formatters pour le « Mapping » .......................................................................................................... 76 8. OData................................................................................................................................................... 76 9. Authentification Web Api .................................................................................................................... 77 10. MongoDB ........................................................................................................................................ 82 a. Installation de MongoDB C# driver .................................................................................................................. 82 b. Service WEB ..................................................................................................................................................... 83 III. BOOTSTRAP ........................................................................................................................................... 86 1. INSTALLATION ET THEMES ............................................................................................................................... 86 2. GRID SYSTEM ............................................................................................................................................... 87 a. Cacher une colonne selon une résolution ............................................................................................ 87 b. Décalage de colonnes avec « offset » .................................................................................................. 88 2 3 c. Image flottante .................................................................................................................................... 88 3. BASES ......................................................................................................................................................... 88 a. Typographie ......................................................................................................................................... 88 b. Boutons, groupes de boutons et dropdowns ....................................................................................... 89 c. Icones ................................................................................................................................................... 90 d. Formulaires, listes, et tables ................................................................................................................ 90 « input-group » .......................................................................................................................................................... 90 e. Navbar desktop et mobile .................................................................................................................... 90 f. Header et breadcrumb ......................................................................................................................... 91 g. Pagination............................................................................................................................................ 91 h. Well ...................................................................................................................................................... 92 i. Panels .................................................................................................................................................. 92 PLUGINS .............................................................................................................................................................. 92 a. Collapse et accordéon .......................................................................................................................... 92 b. Boite de dialogue ................................................................................................................................. 93 c. Alert ..................................................................................................................................................... 93 d. Tab ....................................................................................................................................................... 94 e. Tooltip .................................................................................................................................................. 94 f. Caroussel.............................................................................................................................................. 95 3 4 MVC I. Modèles/ ROUTES Contrôleur Va chercher Données les données « http://... / » « contrôleur »/« action »/« id » Action Result  Vue (Affiche les données)  Vue partielle  « content » (texte, xml)  JSON  Redirection  etc. 1. « From scratch » - Démarrer avec un projet Asp.Net vide 1. Créer un projet Asp.Net vide 2. Installer « Asp.Net Mvc 5 » avec les packages NuGet 3. Ajouter « RouteConfig » dans un dossier « App_Start » using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MvcFromScratch { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) Définition des routes de { l’application. Ici la route par routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); défaut dirigeant vers l’action routes.MapRoute( « Index » du contrôleur « Home » name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } } 4 5 4. Ajouter fichier de configuration de l’application « Global.asax» using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MvcFromScratch { public class Global : System.Web.HttpApplication { Enregistrement des routes protected void Application_Start() { définies dans le fichier RouteConfig.RegisterRoutes(RouteTable.Routes); « RouteConfig » } } } 5. Ajouter un contrôleur « Home » dans un dossier « Controllers » using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcFromScratch.Controllers { public class HomeController : Controller L’ « action result » ici est { // GET: Home une chaine de caractère. public ActionResult Index() Cela affichera juste ce { message dans une page return Content("Bonjour!"); } } } Projet minimum 5 6 Avec Vue en « action result » public ActionResult Index() { return View(); } Vues :  « _ViewStart.cshtml » hérite de « StartPage » (System.Web.Mvc) sert à définir la master page « par défaut » utilisée par toutes les pages de contenu.  Toutes les autres pages héritent de « WebViewPage » (_Lauout, Index, etc.) 2 possibilités :  Soit définir en haut de chaque vue la page dont elle hérite Exemple « _ViewStart.cshtml » @inherits System.Web.WebPages.StartPage @{ Layout = "~/Views/Shared/_Layout.cshtml"; } « _Layout.cshtml » la master page (ou page de disposition) @inherits System.Web.Mvc.WebViewPage <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title</title> </head> <body style="background:red;"> <div> @RenderBody() </div> </body> </html> 6 7  Soit on crée un fichier de configuration « Web.config » pour le dossier des vues « Views » pour ne pas avoir à définir sur chaque page <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections> <system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> <add namespace="MvcFromScratch" /> </namespaces> </pages> </system.web.webPages.razor> </configuration> Ainsi on peut simplifier les pages… par exemple « _ViewStart.cshtml » On supprime l’héritage en @{ haut des pages Layout = "~/Views/Shared/_Layout.cshtml"; } Projet minium avec vues et master page Les vues sont rangées dans un dossier portant le nom de leur contrôleur _Layout.cshtml la master page _ViewStart.cshtml permet de définir la master page à appliquer par défaut aux pages de contenu 7 8 2. Routes a. RouteConfig Définir les routes de l’application dans « RouteConfig » (dossier « App_Start ») public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { action = "Index", controller="People", id = UrlParameter.Optional } ); } } Créer une seconde route public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) On place la route au-dessus de { la route « par défaut » routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); La route routes.MapRoute( name: "Ma route", « http://.../personal/ » url: "personal/{myparameter}", defaults: new { controller = "Home", action = "Personal", myparamete r = "Bonjour" } ); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } Dans le contrôleur « Home », on ajoute l’action pour cette route public class HomeController : Controller { // code retiré public ActionResult Personal(string myparameter) { return Content(myparameter); } } 8 9 Renvoie par défaut la valeur définie dans « RouteConfig » Paramètre passé Dans le cas où on aurait pas défini de paramètre de route routes.MapRoute( name: "Ma route", url: "personal", defaults: new { controller = "Home", action = "Personal"} ); … On pourrait quand même passer un paramètre à l’action (code inchangé) en le nommant b. Attribut Route Permettre l’utilisation de public class RouteConfig l’attribut « route » { .Attention de bien mettre public static void RegisterRoutes(RouteCollection routes) avant la route par défaut { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes(); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } Utilisation : Dans le contrôleur « Home » [Route("personal")] public ActionResult Personal() { return Content("Route ok!"); } Si on veut ajouter des paramètres, les mettre entre accolades [Route("personal/{message}")] public ActionResult Personal(string message) { return Content(message); } 9 10 c. Area Il peut être intéressant de découper les gros projets en « Areas » Exemple public class MusicAreaRegistration : AreaRegistration { public override string AreaName { get { return "Music"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Music_default", "Music/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "AreaDemo.Areas.Music.Controllers" } ); } } « Global.asax » AreaRegistration.RegisterAllAreas(); 10

Description:
Actions asynchrones Ajax ActionLink From scratch » - Sécurité « Forms » avec un projet Asp.Net vide . 34.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.