Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET M
Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 1 CHAPITRE 3 Contrôleurs et Vues dans Naoufel KHAYATI AU. 2019 - 2020 95 PLAN 96 Contrôleurs Actions Résultats d’actions Vues Moteurs de vue : ASPX / Razor Transmission de données ViewData / ViewBag TempData Session 95 96 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 2 97 Contrôleurs Contrôleurs MVC 98 Le contrôleur possède un ensemble de méthodes Le contrôleur Home a trois méthodes Index(), About() et Contact(). Ces méthodes correspondent aux actions exposées par le contrôleur. Par exemple : L'URL /Home/Index invoque la méthode Index() de HomeController. 97 98 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 3 Contrôleurs MVC 99 Chaque nom de contrôleur doit obligatoirement être suffixé par « Controller ». Sinon, on ne sera pas en capacité de l'appeler. On doit toujours créer les contrôleurs dans le dossier « Controllers ». Sinon, on n’a pas respecté les conventions d'ASP.NET MVC et les autres développeurs auront plus de mal à comprendre l’application. Contrôleurs MVC 100 Un contrôleur hérite de la classe System.Web.Mvc.Controller. Grâce à cet héritage, il obtient un certain nombre de caractéristiques clés Méthodes d’actions. Résultats d’actions. Filtres : Servant à encapsuler des comportements réutilisables (à voir dans un prochain chapitre). Les méthodes générées par défaut sont des squelettes représentant un bon point de départ. Il faut, cependant, ajouter la logique de traitement. 99 100 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 4 101 Toute action est accessible à partir d’une URL différente et est invoquée avec des paramètres extraits à partir de la requête. Une action d’un contrôleur doit être une méthode publique. Toute méthode publique d'un contrôleur est automatiquement exposée comme une action du contrôleur (retournant un ActionResult ou non) à condition qu’elle ne soit pas statique. Si besoin est, une méthode publique qui n’est pas une action doit être annotée (précédée) par l’attribut [NonAction]. Actions des Contrôleurs MVC 102 Si on veut spécifier un nom d'action différent de celui de la méthode, on peut utiliser l'attribut ActionName. Cette action sera invoquée via l’URL http://localhost/movie/find/1 au lieu de http://localhost/movie/getMovieById/1. Actions des Contrôleurs MVC 101 102 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 5 103 Une action retourne un objet ActionResult qui sera envoyé au navigateur en réponse à la requête. Le Framework ASP.NET MVC supporte un certain nombre d’ActionResult : ViewResult : Une vue affichant de l'HTML EmptyResult : Représente une absence de résultat RedirectResult : Représente une redirection vers une URL JsonResult : Représente un résultat sous forme de JavaScript Object Notation qui peut être utilisé dans une application Ajax. JavaScriptResult : Représente un script JavaScript ContentResult : Représente un résultat sous forme de texte FileContentResult : Représente le contenu d’un fichier. Etc. Résultats d’actions 104 Une action doit retourner le résultat de l’une des méthodes suivantes : View() : retourne un ViewResult Redirect(): retourne un RedirectResult RedirectToAction() / RedirectToRoute() : retournent un RedirectToRouteResult Json() : retourne un JsonResult Javascript() : retourne un JavaScriptResult Content() : retourne un ContentResult File() : retourne un FileContentResult, FilePathResult, FileStreamResult en fonction des paramètres. Résultats d’actions 103 104 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 6 Résultats d’actions – ContentResult 105 La méthode Content() est spéciale. On peut l’utiliser pour renvoyer au navigateur un résultat sous forme de texte au lieu du html. Ces trois exemples donnent le même résultat. Résultats d’actions – ContentResult 106 Si une action retourne un résultat qui n'est pas un ActionResult, alors il sera automatiquement encapsulé dans un ContentResult. Par exemple quand l'action Date() suivante est appelée, la date est renvoyée dans un ContentResult automatiquement : Le Framework ASP.NET MVC convertit le DateTime en String et l'encapsule dans un ContentResult automatiquement. Le navigateur obtient ce résultat en tant que texte simple. 105 106 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 7 Résultats d’actions – ViewResult 107 Pour A(), même si on n’a rien précisé, on cherche une vue qui porte le même nom que l’action, donc nommée A. Pour B(), on cherche une vue nommée C (c’est dit explicitement). Pour C(), les deux instructions return View() et return View("C") sont équivalentes. Résultats d’actions – ViewResult 108 Ici, le retour de l’action B() dépend de celui de l’action C() !!! 1er cas : l’action C() va essayer de retourner une vue nommée B car c’est l’action B qui l’a sollicitée. 2ème cas : c’est la vue C qui sera retournée. (1) (2) 107 108 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 8 Résultats d’actions – ViewResult 109 Si une action veut retourner une vue qui lui est propre, elle doit en posséder une déjà. L’Action Index() de « Home » doit avoir une vue Index qui se situe dans le dossier Views/Home, sinon le serveur renvoie l’erreur suivante : Résultats d’actions – Transfert 110 Dans les cas précédents, MVC est censé retourner du HTML. Le navigateur n’est pas au courant du changement de l’action !!! Ces exemples représentent un transfert de traitement (de page). La requête est traitée par deux actions successives (sur le serveur). Il s’agit bien de la même requête réécrite et transférée. Le transfert arrête l'exécution de la 1ère action. Le client ne peut pas savoir qu’il y a eu transfert. Le transfert a lieu sur le serveur. L’URL ne change pas sur le navigateur. 109 110 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 9 Résultats d’actions – Redirection 111 Dans ce qui suit, MVC est censé rediriger la requête à l’action ou à la route spécifiée. Le navigateur reçoit la notification de redirection et crée une nouvelle requête. Redirection de traitement (de page) Résultats d’actions – Redirection 112 La redirection envoie le code HTTP 302 vers le navigateur ainsi que la nouvelle URL de la page désirée. Le code 302 signifie « La ressource demandée réside temporairement sous une URL différente ». A la réception de ce code, le navigateur essaie d'ouvrir le nouvel emplacement de la ressource qui a été proposée par le serveur. Cela provoque deux demandes au serveur, l'une à l'URL d'origine, et la seconde vers la nouvelle URL. 111 112 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 10 Résultats d’actions – Redirection 113 Le client est au courant de la redirection. La redirection peut changer de contrôleur (et même de serveur pour le cas de Redirect()). Résultats d’actions – Redirection 114 Cas de RedirectToAction() Construit une URL de redirection vers l’action spécifiée à partir de la table des routes. Redirection vers l’action "C" du contrôleur "OtherController" Si l’action a besoin de paramètres 113 114 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 11 Résultats d’actions – Redirection 115 Cas de Redirect() Construit une URL de redirection vers l’URL spécifiée. L’URL est à préciser par le développeur. Résultats d’actions – Redirection 116 Cas de RedirectToRoute() Cherche la route spécifiée puis fait une redirection vers l’action qui y est définie. 115 116 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 12 117 Vues Vues MVC 118 L’action Index() retourne une vue nommée Index.cshtml située dans le chemin : /Views/Home Cette vue contient du code HTML, des scripts, des objets d’interface, etc. La vue dans sa version affichée dans un navigateur est générée par un moteur de vue (View Engine). 117 118 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 13 Moteurs de vues 119 Un moteur de vue est un module qui met en œuvre un modèle de syntaxe des codes à insérer dans les pages html. C’est le composant qui va s’occuper de générer du code HTML Razor et ASPX en sont des exemples. Moteur de vue ASPX 120 Les codes C# ou VB.NET sont mis entre <% et %> dans les pages Web ASP.NET (.aspx). Cette combinaison est assez inconfortable pour l'écriture et la délimitation du code qui peut rapidement devenir illisible. 119 120 Naoufel KHAYATI Cours « Développement d’Applications d’Entreprises » (ASP.NET MVC 5) ENISo – IA2 – 2019 / 2020 14 Moteur de vue ASPX 121 Généralement, les développeurs utilisent les vues au format ASPX, surtout pour des raisons historiques. ASPX est celui utilisé avec ASP.NET Web Forms. Les vues au format ASPX contenant du code, deviennent difficile à écrire car il faut sans arrêt ouvrir et fermer les tags <% et %>. Écriture des boucles ou uploads/Finance/chapitre-3-controleurs-et-vues.pdf
Documents similaires
-
17
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Nov 03, 2021
- Catégorie Business / Finance
- Langue French
- Taille du fichier 1.0611MB