Para esta aplicación necesitaremos crear un entorno de trabajo en MVC NetCore 5, tambien debemos tener a nuestra disposición una base de datos con la cual trabajar.

En mi caso tendré Una base de datos denominada Kibunshi con tres tablas una de Peliculas , Superheroes y Mundos

Base de datos:

Como vemos a continuación yo tengo tres tablas en las cuales Pelis será destinada para la búsqueda y Mundo y Superhéroes serán destinadas para el filtro ya que los dos comparten el campo Id_Mundo

ASP.NET CORE MVC:

Creamos una aplicacion que sea de tipo ASP NET.CORE MVC (Model-View-Controller)

Al crear vermos la carpeta Models, en dicha carpeta pondremos las clases correspondiente a nuestra base de datos, ponemos tres clases: Pelis, Superheroes y Mundos

NuGet: Vamos a instalar los siguientes Nuget haciendo clic derecho encima del proyecto y accediendo a Manage NuGet Packages.

NuGetPackages

**IMPORTANTE** al trabajar con una versión Net Core 5 debemos instalar la versión de los NuGet hasta la versión 5.14 a menos ya que si instalamos la versión 6 nos daría fallos.

Data: Creamos la carpeta Data dentro del proyecto , en dicha carpeta estará nuestro Context que es una clase y la denominaremos SuperheroesContext y ahí es donde realizaremos nuestras funciones para heredar de la base de datos y de los Models creados para que nuestra aplicación sea funcional y eficiente

Context

Repositories: Creamos nuestra carpeta Repositories en ella irá nuestro código «lógico», creamos una clase llamada RepositorySuperheroes y empezamos con el código.

Código de búsqueda para Pelis: hacemos la sentencia LinQ donde ponemos Contains, que contenga (titulo) que será la variable correspondiente al campo Titulo de pelis , el cual buscaremos para realizar la búsqueda

Repository

Creamos un nuevo Controller denominado PeliculasController en el haremos nuestro método Post para realizar la búsqueda

Controller Peli

Creamos la vista, en ella pondremos que el @model<List> porque en repository estamos haciendo el filtro por una lista, tenemos que tener en cuenta el name=»titulos» que esta dentro del form, es la variable que pasaremos a nuestro controller en el Post

Vista Busqueda

Y si el Model != null pintaremos una tabla para que aparezca las películas

Vista Busqueda

Resultado:

Filtrar por datos : Vamos a realizar un filtro accediendo a dos tablas que comparten un mismo campo en este caso el Id_Mundo correspondiente a Mundo y Superheroes.

En el Repository escribimos la sentencia LinQ

Repositories

Necesitamos una lista de superhéroes la cual sea identificada por su idmundo al ser un filtro y buscar por id, necesitamos realizar una List<int>, si fuera un string mundo, sería List<string>.

Al hacer el List<int> lo que hacemos es un Distinct para que no haya repeticiones si hubiera mas de un idmundo 1 y no nos aparezca en el foreach que haremos.

Creamos el Controller de SuperheroesController y realizamos un método Post, en el Get vamos a poner el List<int> mund en el cual mund será pasado por ViewBag o ViewData como realizaré para el posterior Casting.

En cuanto al post ponemos la variable que obtendremos y ponemos la List<Superheroes> y List<int> volvemos a pasarlo por ViewData y retornamos el sup de List<Superheroes>, creamos la vista.

Controller Superheroes

En la vista ponemos el @model<List>, en mi caso lo he realizado con scafolding modificando el formulario.

Como observamos a través de Casting pasamos los datos de List<int> del Id_Mundo correspondiente a los 4 Ids que hay, debemos tener en cuenta el name que hay en select, que es el de select name=»idmundo», correspondiente a la variable del post ubicada en el controller.

Tanto el option como lo que pintaremos deben tener el @mun que hemos realizado para el bucle.

Al igual que en la búsqueda pintaremos que si el Model !=null pintaremos una tabla.

Vista Superheroes

Resultado : Como resultado veremos un select option con los 4 id, en mi caso cogeré el 3 perteneciente a OusamaRanking.

susu
Resultado filtro

Por ultimo haremos un enlace que al pintarnos la tabla nos lleve a los detalles del mundo al que pertenecen, lo hacemos con <a asp-action=»», asp-controller»»,asp-route-id=»»> llevandonos al controller de Mundo

Vista Superheroes

Para ello en el repository creamos la sentencia LinQ para buscar por id, lo plasmamos en el controller y creamos la vista a vuestra elección, en mi caso lo realice con Scafolding para agilizar la creación

10
Repository Mundo

Como vemos en mundo hay un enlace para ir a Ir a su Mundo, si pulsamos nos llevará a los detalles de IdMundo

sss
Detalles Mundo

Para finalizar: Por si sois principiantes y no lo teníais en cuenta , para que la app funcione debemos instanciar nuestra cadena de conexión en el appsetting y en el startup, en mi caso vuelvo a reiterar lo he realizado con SqlServer.

cococooc
appsettings
susuuss
startup

Y eso sería todo, cualquier duda o problema podéis contactar conmigo vía LinkedIn, un saludo y espero que sea de vuestro agrado.

Autor/a: Luis Alberto Torres Olivera

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:

GitHub : https://github.com/LuisTorresW/KibunshiSph

LinkedIn: https://www.linkedin.com/in/luistorresolivera/

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.