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!
Un vídeo
http://www.lostechies.com/blogs/hex/archive/2009/09/16/video-of-the-david-ebbo-presenting-t4mvc-to-the-community-for-mvc-virtual-user-group.aspx
¡Gracias por la aportación!
Saludos 🙂
Muchas gracias! Simple, claro y directo
Saludos
Gracias a ti por tu comentario Arturo 🙂
¡Saludos!