En este post vamos a ver 2 conceptos bastante útiles en MVC, Helpers y Extensions.

Para ello utilizaremos Microsoft Visual Studio y un proyecto MVC.

Primero empezaremos creando un proyecto ASP.NET Core Web App(Model-View-Controller) 

img1
Creación del proyecto

Le indicamos el nombre que deseemos, le daremos a siguiente y create.

Empezaremos con los Helpers

Helpers

Las clases Helper en .NET son clases que nos dan una utilidad a un proyecto como puede ser por ejemplo una clase que deserializa/serializa un objeto, un proveedor de rutas, un conversor de tipos primitivos etc. Estas clases suelen ser static, de forma que para poder utilizar sus métodos no es necesario que instanciemos el objeto de la clase.

Antes de Empezar crearemos una clase Tienda que nos ayudará con la explicación, dentro de la carpeta Models creamos una clase Tienda con la siguiente estructura:

img3
Clase Tienda

A continuación  crearemos una carpeta sobre el proyecto llamada Helpers, la cual tendrá en su interior todas las clases helper que deseemos:

img2
Carpeta Helpers

Para mi ejemplo crearé una clase Helper que se encargará de dar información de una tienda pasada como parámetro a un método GetInfoTienda, esta clase se llamará HelperTienda:

img4
Carpeta Helper con la clase HelperTienda

Ahora crearemos el método static GetInfoTienda:

img5
Método GetInfoTienda

Este método recibe un objeto tienda y a partir de este objeto devolvemos un string con todos los datos de la tienda.

Para utilizar este Helper nos crearemos un nuevo controlador, sobre la carpeta Controllers crearemos un nuevo controller con el nombre TiendaController:

img6
Creación controller

Cambiamos el nombre del método Index a TiendaHelperView:

public class TiendaController : Controller

{

       public IActionResult TiendaHelperView()

       {

            return View();

       }

}

Para probar la clase helper primero nos creamos una Tienda:

Tienda tienda = new Tienda 

            NombreTienda = «Teclamania», 

            StockDisponible = 50,

Abierta = true 

};

Este objeto será enviado al helper para que nos devuelve un texto con todos los datos de la tienda, para ello, llamamos al helper de la siguiente forma:

string datostienda = HelperTienda.GetInfoTienda(tienda);

Recuerda hacer también los using de las distintas clases para poder utilizarlas en el controller:

img7
Using del Helper

Ahora agregamos los datos de la tienda a un ViewBag para poder mostrarlos posteriormente en la vista:

ViewBag.DatosTienda = datostienda;

El método quedaría de la siguiente forma:

img8
Método TiendaHelperView

Ahora para comprobar que funciona sobre la carpeta Views creamos una subcarpeta llamada Tienda y dentro un archivo cshtml llamado TiendaHelperView:

img9
Vista del controlador de tienda

Y dentro agregamos lo siguiente:

<h1 class=»text-primary»>

    @ViewBag.DatosTienda

</h1>

Para ver que funciona en el archivo cshtml _Layout agregamos el enlace para acceder a esta página:

img10
Enlace a la vista en _Layout

A continuación ejecutamos la aplicación y comprobamos que funciona:

img11
Resultado del Helper

Al acceder al enlace de Ejemplo de Helpers podemos comprobar que vemos la información tal cual nos la envía el Helper.

Extensions 

Las extensions en .NET Core funcionan como extensiones o ampliaciones de las clases de .NET como podrían ser Session, String etc. a las cuales podríamos agregar las propiedades y métodos que nosotros queramos.

Para las extensions agregaré un método a la clase String que formateará un texto al cual le quitaremos los espacios y lo transformaremos a mayúsculas.

 Lo primero que vamos a hacer es crear una carpeta en la raíz llamada Extensions y dentro de ella una clase llamada StringExtension:

img12
Carpeta y clase deExtension

Tanto la clase como todos los métodos tienen que ser static.

Ahora programaremos el método que transforma el texto, para ello, creamos un método static llamado TransformarTexto. En los paréntesis del método tenemos que indicar a que clase queremos agregar este método y el nombre que le daremos:

(this String texto)

Ahora podemos acceder a todos los métodos de la clase string y al mismo string que está llamando a este método haciendo referencia a “texto”, dentro del método agregamos el código necesario para formatear el texto y lo devolvemos:

string textoformateado = texto.Replace(» «, «»).ToUpper();

return textoformateado;

La clase quedaría de la siguiente manera:

img13
Clase StringExtensions

Para probar el extensión vamos a crearnos otro controller llamado ExtensionsController:

img14
ExtensionsController

El controller tendrá un método post de Index para recibir un string el cual será formateado con la extensión. Primero Crearemos el post:

 [HttpPost]

 public IActionResult Index(String texto)

 {

        return View(); 

 }

Guardaremos el texto formateado en un string. Al utilizar el método creado en extensions podemos ver que nos da un error el cual nos indica que no lo puede encontrar, para solucionarlo tenemos que hacer el using de nuestra clase de extension:

img17
Using de Extensions

Meteremos el string en ViewBag para poder mostrarlo en la página:

ViewBag.TextoFormateado = cadenaFormateada;

El controller quedaría así:

img18
Controlador de Extensions

Creamos la vista para el controlador:

img15
Vista Index

Dentro creamos un formulario donde podremos escribir el texto que después formatearemos con el extension:

img16
Vista Index

Para probar acceder a la vista anterior agregamos el enlace a _Layout:

img19
Enlace en _Layout

Comprobamos la funcionalidad ejecutando la aplicación y accediendo al enlace de Ejemplo de extensions:

img20
Primera demostración de extension

Con el texto introducido en el input le daremos al botón y comprobaremos que realiza las acciones del método de extensions:

img21
Resultado final

Tanto Helpers cómo Extensions nos pueden aportar muchísima utilidad en un proyecto MVC y limpieza/organización de código. Lo visto en este post es una muy pequeña muestra de cómo utilizarlos.

Autor/a: Esteban Martínez Quintanar

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/Estebanmq/HelpersExtensionMvc

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.