Html Helpers fortemente tipados com T4 Templates

07/01/2009 08:07:00 By Felipe Pessoto

Já há algum tempo o David Ebbo vem criando algumas soluções para os Html Helpers que hoje são baseados em strings.

Para quem não sabe do que estou falando, vai um exemplo: <%=Html.ActionLink("TextoLink", "Acao", "Controller", new{param1 = "abc", param2 = "def" }, null) %>

Assim quando você muda o nome do controller ou da ação, o seu ActionLink para de funcionar, e não é gerado erro em tempo de compilação, já que é tudo string, você só percebe quando seu site gera um erro.

Até hoje ja apareceram várias soluções, as que pareciam mais simples de usar, com Expression Trees, eram também muito lentas, gerando um grande overhead. Exemplo de utilização: <%= Html.ActionLink<NomeController>(x => x.NomeMetodo(param1, param2), "TextoLink") %>

A solução do David é um template T4, que gera algumas classes e Extension Methods para os Html Helpers, a chamada fica assim:

<%=Html.ActionLink("logout", MVC.Controller.Acao(Param1)) %>

Tudo fortemente tipado, limpo e sem impacto na performance. Já estou usando no meu projeto e recomendo. Para usar basta colar o arquivo tt na raiz do projeto, e cada vez que atualizar seu projeto, basta re-salvar o arquivo tt pra forçar o Visual Studio a gerar o .cs novamente

 

Update:  O Template foi incluído na página de download do MvcContrib no Codeplex


Comments (0)