En este post vamos a enseñar como añadir productos con sus cantidades a un carrito usando Session en .Net Core

Primero instalamos los siguientes NuGet

Después configuramos el appsettings, añadiendo nuestra conexión a la base de datos

Ahora en Program añadimos Session para que funcione en nuestro proyecto

Creamos una nueva carpeta llamada Extensions

Y dentro un archivo llamado SessionExtension

Haremos un using a JsonConvert

image008

Ahora en nuestra carpeta Model creamos una clase Productos

Ahora creamos un carpeta Data donde vamos a tener nuestro Context

image012

Después creamos un nuevo Repositorio llamado RepositoryProductos donde vamos a añadir un método para coger todos los productos

image014

Y después un método que nos devolver una lista de productos a partir del carrito

image016

Vamos a incluir Extension en _ViewImports.cs para poder utilizarlo

image019

Ahora en nuestro controller creamos las siguientes vistas.
Creamos una vista Index donde le proporcionamos un id, si llega un id comprobara si el carrito esta creado en la Session si no esta creado, crea uno

image021

Ahora creamos una vista Index HttpPost, primero obtiene el carrito actual de la sesión y lo actualiza con el nuevo producto

image023

Y por último la vista Carrito donde mostramos el contenido del Carrito y podemos eliminar todo el producto con sus respectivas cantidades

image025

Ahora en el programa agregamos las regencias al repository y al context, y también la conexión a la base de datos

image027

Ya en la vista en Index declaramos carrito de esta manera

image029

Y dentro del formulario el foreach con los datos

image031

Y dentro del carrito mostramos los productos con su cantidad y la suma total

image033

Dejo en el proyecto el script de la base de datos

Autor/a: Raúl García Moratinos

Curso: Desarrollo Web Full Stack + MultiCloud con Azure y AWS 

Centro: Tajamar 

Año académico: 2022-2023 

Enlace Github:https://github.com/Raulgm111/CarritoConCantidades.git

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.