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.
- Sous le dossier
Views
, créez un dossierPanier
- Sous le dossier
Views/Panier
, créez une vueIndex
recevant unViewModel
PanierItemViewModel
.Snowfall.Web.Mvc/Views/Panier/Index.cshtml@model Snowfall.Web.Mvc.Models.Panier.PanierItemViewModel
@{
ViewBag.Title = "Panier";
}
<h2>Panier</h2> - Retournez
View()
dans l'actionIndex
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();
} - Accédez à l'URL
/Panier
pour vérifier que votre page panier s'affiche. - Vous pouvez ensuite afficher les différentes informations contenues dans le
ViewModel
. Nous n'avons qu'unId
cependant :(@model Snowfall.Web.Mvc.Models.Panier.PanierItemViewModel
@{
ViewBag.Title = "Panier";
}
<h2>Panier</h2>
@if(Model != null)
{
<p>Item Id: @Model.ItemId</p>
} - 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.