Session en ASP .NET
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