ASP .NET Core MVC – Utilisation des objets ViewData / ViewBag / TempData

Introduction

ASP .NET Core MVC propose différents objets permettant de communiquer des données entre les différents éléments d’une application. Volontairement cet article ne traite pas de la communication d’un Model / ViewModel du contrôleur à une vue. Ces objets sont les suivants : ViewData, ViewBag et TempData. Voici un schéma permettant de résumer leur rôle que nous détaillerons dans cet article :

Les éléments d’une application ASP .NET MVC Core

Une application ASP .NET Core MVC contient trois principaux éléments : les classes du modèle, les vues et les contrôleurs. Les vues regroupent les vues non partielles, les vues partielles et les vues de disposition.

Le schéma ci-dessus présente les éléments suivants :

  • Les contrôleurs : classe contenant des actions qui sont exécutées suite à une opération de routage
  • Les vues de disposition (_Layout.cshtml) : fichier cshtml contenant le cadre principal de l’application
  • Les vues non partielles : vues dont le contenu est affiché dans une vue de disposition
  • Les vues partielles : vues permettant de factoriser des éléments de présentation entre les vues non partielles (y compris la vue de disposition)

Rôles des objets ViewData, ViewBag et TempData

                D’après le schéma ci-dessus, les rôles des objets de communication sont les suivants :

  • ViewData / ViewBag (ViewBag est un wrapper vers ViewData) :
    • Permet à un contrôleur de fournir des données / objets à une vue partielle ou non partielle
    • Permet à un élément de présentation de fournir des données / objets à un autre élément de présentation
  • TempData. En plus des rôles assurés par les objets ViewData / ViewBag :
    • Permet à un contrôleur de communiquer des données et des objets à une autre de ses actions, ou une action d’un autre contrôleur (utilisation de la méthode RedirectToRoute). Dans ce cas, les objets doivent être sérialisés / parsés (par exemple au format Json).
    • Permet la communication bidirectionnelle de données et des objets entre une vue non partielle ou une vue de disposition et une vue partielle

Étiquettes :

About: James RAVAILLE

Travaillant avec la plateforme Microsoft .NET depuis 2002, j'alterne les missions de formation et d'ingénierie avec cette plateforme. J'écris ce blog pour transmettre mes connaissances à tout développeur, qu'il soit débutant ou expérimenté.