Aller au contenu principal

14-3 Lire le contenu de la session

Nous avons réussi à ajouter à la session un objet. Il serait intéressant de pouvoir lire le contenu de la session et de l'afficher à l'utilisateur!

Créons une action Index dans le contrôleur de Panier afin d'afficher le contenu de la session.

Snowfall.Web.Mvc/Controllers/PanierController.cs
[Route("[controller]")]
public class PanierController : Controller
{
[HttpGet]
public async Task<IActionResult> Index()
{

}

//...

Lire une clé dans la session

Afin de lire une clé dans la session, on peut utiliser HttpContext.Session.GetString(string key). Par exemple:

Snowfall.Web.Mvc/Controllers/PanierController.cs
[HttpGet]
public async Task<IActionResult> Index()
{
var panier = HttpContext.Session.GetString("panier");
}

Désérialiser un string contenu dans la session

Pour désérialiser un string en objet, soit l'opération inverse de tout à l'heure, on peut utiliser JsonSerializer avec la fonction Deserialize.

Snowfall.Web.Mvc/Controllers/PanierController.cs
[HttpGet]
public async Task<IActionResult> Index()
{
var panier = HttpContext.Session.GetString("panier");

if (panier != null)
{
var panierItem = JsonSerializer.Deserialize<PanierItemViewModel>(panier);
}
}

Afficher le panier

Pour afficher votre panier, vous pouvez créer une vue associée à l'action Index et retourner cette dernière.

  1. Sous le dossier Views, créez un dossier Panier
  2. Sous le dossier Views/Panier, créez une vue Index recevant un ViewModel PanierItemViewModel.
    Snowfall.Web.Mvc/Views/Panier/Index.cshtml
    @model Snowfall.Web.Mvc.Models.Panier.PanierItemViewModel

    @{
    ViewBag.Title = "Panier";
    }

    <h2>Panier</h2>
  3. Retournez View() dans l'action Index
    Snowfall.Web.Mvc/Controllers/PanierController.cs
    [HttpGet]
    public async Task<IActionResult> Index()
    {
    var panier = HttpContext.Session.GetString("panier");

    if (panier != null)
    {
    var panierItem = JsonSerializer.Deserialize<PanierItemViewModel>(panier);
    return View(panierItem);
    }

    return View();
    }
  4. Accédez à l'URL /Panier pour vérifier que votre page panier s'affiche. img
  5. Vous pouvez ensuite afficher les différentes informations contenues dans le ViewModel. Nous n'avons qu'un Id cependant :(
    @model Snowfall.Web.Mvc.Models.Panier.PanierItemViewModel

    @{
    ViewBag.Title = "Panier";
    }

    <h2>Panier</h2>

    @if(Model != null)
    {
    <p>Item Id: @Model.ItemId</p>
    }
  6. Assurez-vous d'ajouter un item à votre panier et tentez d'accéder à la page de panier. Vous devriez voir l'identifiant de l'item que vous avez ajouté au panier.