Muy buenas, soy Andrés Otero estudiante del master Desarrollo Web Full Stack + MultiCloud + Multiplataforma en Tajamar, hoy os explicare como usar session para mandar información entre vistas y controladores. En este caso realizaremos un carrito para este ejemplo, al cual le podremos añadir elemento y eliminarlos.

Nuget necesarios para usar session

Microsoft.AspNetCore.Session

Newtonsoft.Json

Elaboración del proyecto

Una vez creado e instalados los nuget que vayamos a utilizar crearemos sobre la raíz de nuestro proyecto la carpeta Extensions:

Sobre Extensions crearemos la clase Extension.cs

En esta clase crearemos dos métodos que usaremos para recoger cualquier clase de dato y poder tanto almacenarlo(SetObject) en nuestra session como recogerlo(GetObject). Además debemos poner la clase y los métodos static:

Una vez hayamos creado ambos métodos debemos configurar el Startup.cs :

Para realizar la inyección de dependencias. Por un lado sobre ConfigureServices configuraremos la memoria cache y la session:

En este caso la session esta configurada para que si un usuario esta 30 minutos inactivo cierre la session automáticamente. Por otro lado sobre el método Configure indicaremos que usaremos session:

En nuestro controller almacenaremos los datos en session con en este caso lo almacenaremos los datos en un carrito en nuestro caso se encuentra en el IActionResult AñadirCarrito y almacenaremos un listado de las id de los productos que se encuentran en nuestra tabla:

Por último podemos ver los datos almacenados en nuestra session, para ello lo podemos comprobar de dos formas o comprobarlo directamente en la View o desde nuestro controller. Si lo hacemos directamente en la view necesitaremos hacer dos using en el ViewImports.cshtml :

  • @using PostSession.Extensions
  • @using Microsoft.AspNetCore.Http

Una vez añadidos los using solo quedaría llamar en la vista a nuestra session y extraer los datos para poder usarlos:

La segunda manera sería recoger los datos en el controller que se quiera utilizar y mandárselos a la vista de forma normal:

También podemos eliminar los datos almacenados en nuestra session. Para ello usaremos el método remove sobre una lista y actualizaremos con el SetObject nuestra session:

Autor/a: Andrés Otero Figueiredo

Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma

Centro: Tajamar

Año académico: 2021-2022

Código / recursos utilizados / Otros datos de interés: https://github.com/Andrellu/POST_NET

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.