La variable Session en Mvc ASP.NET es muy utilizada e interacciona con las cookies, ya que guarda todo tipo de información, no debe confundirse con las cookies, ya que estas guardan información en el navegador y la Session almacena su información en la memoria del servidor y es única para cada usuario.

Hay que tener en cuenta que esta variable guarda la información hasta que se termina la sesión del usuario.

Esta variable suele utilizarse para carros de la compra y en ellas no debe guardarse mucha información.

Para que todos entendamos el funcionamiento de esta variable de forma sencilla, se trata de una aplicación con una lista de libros cargada desde una base de datos, los cuales puedes añadir a una lista de tus libros favoritos a partir de un enlace.

  1. Crear un proyecto de tipo Aplicación Web ASP.NET(.NET Framework)
Captura1

2. Hay que elegirlo vacío y de tipo MVC

Captura2

3. Como lo voy a hacer con una base de datos será necesario implementarla con una tabla como la siguiente

Captura3
Captura4

4. Para enlazar la base de datos con nuestro proyecto tendremos que añadir una nueva conexión en nuestro explorador de servidores

Captura5

5. En esta pantalla hay que poner el Localhost, en mi caso tengo autenticación de Windows y no tengo que identificarme y debajo elegiremos nuestra base de datos de los libros.

Captura6

6. En las propiedades de la conexión que hemos creado se encuentra nuestra cadena de conexión, la cual tendremos que copiar

Captura6.1

Y pegar en nuestra connectionStrings del web.config, poniendole un nombre como por ejemplo “cadenalibro”

Captura6.2

7. Como voy a utilizar Entity Framework tendremos que instalar dicho NuGet

Captura7
Captura8

8. Nuestra distribución de carpetas será la siguiente

Captura9

9. Lo primero será crear sobre Models una clase llamada Libro, en la que crearemos el modelo Entity Framework desde la tabla de base de datos, y contendrá lo siguiente:

Captura10

10. Ahora tendremos que crear el contexto Libros sobre Models también, esta clase es la que une la base de datos con nuestro proyecto y debe heredar de la clase DbContext, por lo que tendremos que hacer un using System.Data.Entity;

Captura11

11. Sobre la carpeta Repositories crearemos la clase RepositoryLibros, que será la que contiene los métodos que necesitaremos realizar para el funcionamiento de nuestro ejercicio.

Primero habrá que crear una instancia a nuestro context, y crear el constructor RepositoryLibros() para después poder utilizarlo.

El método List<Libro>GetLibros() lo utilizaremos para poder listar todos nuestros libros, y lo retornamos llamando a nuestro context.

El método List<Libro>BuscarLibro(List<int>codigos) lo vamos a utilizar para buscar el libro en concreto el cual queremos añadir en nuestra lista de favoritos, lo haremos con una consulta de LinQ

Captura12

12. Al terminar los métodos que necesitamos, sobre la carpeta Controller crearemos un controller llamado LibrosController, compuesto por un constructor y dos GET.

En nuestro Controller tenemos que crear una instancia a nuestro RepositoryLibros incluyéndole en nuestro constructor LibrosController() para poder utilizarlo.

Captura13

El primer get será ListadoLibros en el cual crearemos una lista con todos nuestros libros.

Para ello le pasamos un id como parámetro, el cual preguntaremos si no es nulo, si es así crearemos una lista llamada codigoLibro que almacenará todos los id que queramos añadir a nuestra Session.

Entonces preguntaremos si nuestra Session es nula, si lo es la lista codigoLibro se reiniciará y sino almacenaremos en codigoLibro la Session como una lista.

Y el ViewBag.Favoritos lo utilizaremos para preguntar en la vista si la Session es nula o contiene un id.

Captura14

Y el segundo que será LibrosFavoritos al que también pasaremos el id como parámetro.

Crearemos una lista llamada códigos que contendrá una lista de nuestra Session.

Si el id es distinto de nulo eliminaremos el código con dicho id.

Si la lista códigos esta vacía la Session será nula y sino la Session está compuesta por la lista códigos.

Si la Session no es nula, crearemos una Lista de la clase Libro, compuesta por los libros que añadamos a partir de nuestro método BuscarLibro y devolvemos la lista de favoritos.

Captura15

13. Una vez creado el controller con sus respectivos métodos ya solo quedaría crear las vistas, las cuales haremos con scaffolding de la siguiente manera.

Sobre el ListadoLibros del controller haremos clic sobre botón derecho y daremos a Agregar Vista

Captura16

Entonces en Template tendremos que poner List y sobre Model class debemos poner Libro (LibrosSession.Models) y añadimos

Captura17

Al hacerlo con scaffolding nos lo crea todo automáticamente, lo único que habría que añadir es el @Html.ActionLink(«Añadir a favoritos», «ListadoLibros», «Libros», new { id = lib.IdLibro }, null)

En el cual mandaremos como parámetro el id del libro.

Y añadir la imagen si la Session no es nula, para sustituirla por el enlace una vez este añadido el libro a nuestra lista de favoritos

Captura18

Lo mismo haremos sobre LibrosFavoritos añadiendo @Html.ActionLink(«Quitar de favoritos», «LibrosFavoritos»,»Libros», new { id = lib.IdLibro }, null), también mandando el id como parámetro para así poder eliminarlo

Captura19

El resultado de la vista ListadoLibros será el siguiente:

Captura20

Para añadir libros a LibrosFavoritos solo tendremos que hacer clic sobre el enlace, y nos saldrá la imagen indicando que ya esta añadido

Captura21

Para ir a la lista de LibrosFavoritos haremos clic sobre el enlace Mis favoritos

Captura22

Y ya tendríamos nuestra lista de LibrosFavoritos

Captura23

Al igual que podemos añadirlos también podremos quitarlos, si dejamos la lista vacía nos indicará que no hay libros en nuestra lista

Captura24

En caso de tener algún error, como que no cargue la Session o no elimine, lo mejor es visitar la propia página de Microsoft

https://docs.microsoft.com/en-us/previous-versions/ms178581(v=vs.140)

Autor: Paula María Bermúdez de la Puente Diéguez

Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin

Centro: Tajamar

Año académico: 2018-2019


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

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.