T4MVC: Eliminando literales de controladores, acciones y vistas.

T4MVC es una plantilla T4 (Text Template Transformation Toolkit), creada por David Ebbo, que genera de forma automática un conjunto de helpers que nos ayudarán a eliminar el uso de literales de nuestra aplicación ASP.NET MVC. Gracias al uso de esta plantilla, podemos utilizar intellisense para localizar el nombre de Controladores, acciones, vistas, scripts etcétera y conseguir un código con menos errores y mucho más mantenible.

Para poder descargarla, bastará con acceder al proyecto ubicado en Codeplex

INSTALACIÓN

La generación del código, se consigue nada más agregar los archivos T4MVC.tt  y T4MVC.settings.t4

¿Por qué es necesario agregar también el archivo .settings?

El archivo T4MVC.settings.t4 contiene un conjunto de constantes que ayudarán a generar el código en base a ellas. Por ejemplo:

// The prefix used for things like MVC.Dinners.Name and MVC.Dinners.Delete(Model.DinnerID)
const string HelpersPrefix = "MVC";

Esta constante nos indica el prefijo que precede a los helpers generados por T4MVC.

// The folder under the project that contains the areas
const string AreasFolder = "Areas";

El nombre de la carpeta que agrupa las áreas.

// The folder under the project that contains the controllers
const string ControllersFolder = "Controllers";

// The folder under the project that contains the views
const string ViewsRootFolder = "Views";

El nombre de las carpetas que contienen los controladores y las vistas.

// Folders containing static files for which links are generated (e.g. Links.Scripts.Map_js)
readonly string[] StaticFilesFolders = new string[] {
"Scripts",
"Content",
};

La carpeta donde figuran los archivos javascript y los estilos.

// If true,the template output will be split into multiple files.
static bool SplitIntoMultipleFiles = true;

La plantilla generará varios archivos de salida.

Si modificamos cualquiera de las constantes y compilamos la solución, se regenerará el código de salida de la plantilla.

En el momento de agregar los archivos, o al recompilar, nos aparecerá el siguiente cuadro de diálogo:

Solamente es un aviso y nos están advirtiendo de que el archivo que estamos intentando agregar/recompilar puede dañar nuestro equipo 🙂 y que no se ejecute si proviene de una fuente de la que no confiamos. En este momento podemos pulsar OK, lo cual significa que arrancará la plantilla de forma automática o bien podemos cancelar y se parará el proceso. Pulsamos OK y arriesgamos 😉

Si nos fijamos en el Solution explorer, ha generado varios archivos .cs ligados a la plantilla .tt.

Como la constante SplitIntoMultipleFiles es igual a true, nos generará tantos archivos como controladores tenga el proyecto.

EJEMPLOS

Controladores


Acciones / Vistas


Links dentro de Content/Scripts


En el controlador

return RedirectToAction("Index");

T4MVC

return RedirectToAction(MVC.Tweet.Actions.Index());  

Global.asax

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Tweet", action = "Index", id = "" } // Parameter defaults
);

T4MVC

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = MVC.Tweet.Name, action = MVC.Tweet.ActionNames.Index, id = "" } // Parameter defaults
);

Scripts

<script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>

T4MVC

<script src="<%=Links.Scripts.jquery_1_3_2_min_js %>" type="text/javascript"></script>

Render Partial

<% Html.RenderPartial("TimeLine"); %>

T4MVC

<% Html.RenderPartial(MVC.Tweet.Views.TimeLine); %>

Action Links

<%=Html.ActionLink("Back to TimeLine", "Index") %>

T4MVC

<%=Html.ActionLink("Back to TimeLine", MVC.Tweet.Actions.Index()) %>


¡Saludos!

4 comentarios en “T4MVC: Eliminando literales de controladores, acciones y vistas.”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *