Articoli con tag T4
Remove Magic strings with T4MVC
Pubblicato da sierrodc in ASP.NET MVC il luglio 8, 2012
T4MVC è un progetto opensource sviluppato da @davidebbo ospitato su codeplex, precedentemente parte di MvcContrib, ora standalone.
Cosa pemette di fare? rimuovere, grazie ad un template T4, l’uso delle “stringhe” da un progetto MVC (riferimenti a controller, action, le area, i file statici …), il tutto con una curva di apprendimento minima (anzi, direi che non vi è curva di apprendimento e che i vari extension method di HtmlHelper sono più “complicati” da scrivere e da leggere).
Alcuni esempi di utilizzo:
- return RedirectToAction(“Index”);
returnMVC.People.Index(); - @Html.ActionLink(“Edit”, “Edit”, new { id=Model.Id })
@Html.ActionLink(“Edit”, MVC.People.Edit(Model.Id)) - @using (Html.BeginForm(“Create”, “People”))
@using(Html.BeginForm(MVC.People.Create())) - href=“@Url.Content(“~/Content/Site.css“)”
href=“@Links.Content.Site_css” - @Html.Partial(“_LogOnPartial”)
@Html.Partial(MVC.Shared.Views._LogOnPartial)
In package nuget contiene due template T4:
- T4MVC.tt: il template che si occupa di generare classi e metodi da utilizzare degli esempi sopra elencati. In particolare si occupa di creare
- classi T4MVC_*Name*Controller che ereditano *Name*Controller ed ne effettuano l’ovverride dei metodi. In questo modo il refactoring dei metodi è immediato (ovviamente una build è necessaria)
- Classi partial *Name*Controller che aggiungono alcune shortcuts direttamente ai nostri controller.
- Una classe statica MVC che raccoglie istanze statiche di classi T4MVC_*Name*Controller
- Classi statiche Scripts e Contents che raccolgono i link alle varie risorse statiche
- T4MVC.tt.settings.t4: raccoglie le convenzioni utilizzate dal precedente template, tra le quali:
- string HelpersPrefix=”MVC”: l’entry point per lo sviluppatore
- string ControllersFolder e ViewsRootFolder: i nomi delle cartelle dove risiedono i controller e le view
- string[] StaticFilesFolders: una lista di cartelle contenenti file statici dai quali T4MVC.tt genererà i riferimenti
T4MVC permette quindi di eliminare le stringhe, facilitare la scrittura e lettura di codice e rifattorizzare lo stesso (anche se alcuni problemi persistono, soprattutto nei cshtml). Buon coding.