ActionLink y RedirectToAction para áreas en ASP.NET MVC

En las últimas entradas de este blog estuvimos viendo distintos puntos asociados a los helpers en ASP.NET MVC. Uno de los puntos importantes que vimos en “Helpers en ASP.NET MVC, reutilizando código en nuestras vistas” es el poder quitar código repetitivo o simplificar ciertas operaciones.

Allí recordé el comentario que había dejado @maxilovera en la entrada “Áreas en ASP.NET MVC – Una forma de organizar nuestras aplicaciones“:

Solamente hay que acordarse del parámetro de @area en los links para no volverse loco con las redirecciones. Aquí podría armarse un helper para facilitar la codificación

Este comentario venía a raíz de que para el Html Helper ActionLink como para las redirecciones (método RedirectToAction en los controladores) usando áreas, debíamos acordarnos de establecer como un atributo diferenciado el área a usar:

Area - ActionLink
Ejemplo de uso de áreas en el armado de un link
Area - RedirectToAction
Ejemplo de uso de áreas en la redirección

Esto puede ser propicio a olvidarnos de declarar ese atributo, además de que es algo repetitivo a realizar constantemente. Así que veamos cómo mejorar la situación con lo aprendido en los post’s anteriores.

Lo primero que vamos a definir es que para esta solución utilizaremos los Html Helpers, extendiendo lo ya definido en el namespace Html. Para ello crearemos el helper de la siguiente forma:

HelperAreas - HelperActionLink
Helper extendiendo ActionLink para áreas

Leer más »

Áreas en ASP.NET MVC – Una forma de organizar nuestras aplicaciones

Cuando trabajamos en nuestras aplicaciones ASP.NET MVC muchas veces llega el momento en que su tamaño comienza a ser demasiado grande, haciéndose muy difícil y tediosa la gestión de todos los controladores, modelos y vistas necesarios. Como generalmente sucede, tenemos una solución nativa para esto: las áreas.

La definición más simple de área es que la misma es una parte de nuestra aplicación. Cada área tiene su conjunto de controladores, modelos y vistas, de forma que hay una separación tanto a nivel lógica como física de los mismos. Como comentamos antes, esto es muy útil en aquellos proyectos muy grandes, en donde la cantidad de los elementos mencionados anteriormente hace su gestión prácticamente imposible.

También hay otros casos donde podemos usar áreas. Básicamente, cuando tenemos dos o más partes que debemos separar por algún propósito definido. Como mencionamos antes, uno puede ser la cantidad de elementos. Otro podría ser por compatibilidad con SEO que necesite tener una parte de nuestra aplicación y no otra. Y así con más casos donde haya una diferenciación. La precaución que debemos tener (como en casi todo) es no abusar de esta herramienta y terminar con muchas áreas, la cual cada una tiene un solo controlador (excepto que haya un motivo que realmente lo justifique).

Vayamos a un ejemplo para ver como realizarlo. Supongamos que vamos a realizar un sistema de una universidad, el cual tendrá soporte a la parte contable, alumnado y autogestión de los alumnos. Ya podemos plantear inicialmente que nuestra aplicación tenga tres áreas totalmente diferenciadas, una para cada uno de los puntos mencionados anteriormente (aunque en la práctica tal vez requiera una análisis más detallado para entender la necesidad).

Lo primero que debemos hacer es sobre nuestro proyecto ASP.NET MVC, seleccionar la opción “Agregar” -> “Área…“. Allí simplemente nos aparecerá un diálogo de carga para que ingresemos el nombre del área a crear:

Agregar área
Agregar área a nuestra aplicación

Leer más »