Esse é o terceiro post sobre ASP.Net MVC 2 Preview 1. Os outros dois são:

  1. Primeiras impressões e suporte a áreas
  2. Data Annotations

Neste vamos ver os helpers tipados. E esse é bem simples e rápido.

O problema:

Você escrevia a view, e sem querer digitava um nome errado de algum campo. Tudo compilava, mas você só percebia o problema em runtime. Por exemplo, escrevia:

<%= Html.TextBox("Ttulo", Model.Titulo) %>

ou

<%= Html.TextBox("Ttulo") %>

Notaram que na string está faltando um “i”? No primeiro caso, o dado é exibido corretamente, mas é postado incorretamente. No segundo, ele sequer é exibido. Você até pode pegar esse tipo de problema com um teste de interface gráfica (que você também devia estar fazendo), como os que o VSTS provê, ou um Fitnesse, mas não seria melhor se você pudesse pegar isso em compile time?

Pois bem. A solução:

Helpers tipados, baseado em lambdas e Expressions. Vivas às lambdas. Fica assim:

<%= Html.EditorFor(p => p.Titulo) %>
<%= Html.LabelFor(p => p.Titulo) %>

E adivinhem? Mesmo se estiver com erro, ainda vai compilar! Pra ter suporte à validação das views em tempo de compilação, você precisa também descarregar o projeto (veja o primeiro post da série onde fiz isso para abilitar suporte a áreas), e editar esta linha, modificando ela de false para true:

<MvcBuildViews>true</MvcBuildViews>

Só que se você fizer isso a compilação vai demorar um pouco mais. Mas é um preço a se pagar se isso é importante para você. Vejam o resultado abaixo:

image

Notem também que a palavra “Ttulo”, escrita errado está vermelha. Isso é o Resharper. Ou seja, você não precisa mexer no XML se estiver usando Resharper. A bolinha vermelhinha no canto inferior direito também mostra isso, e clicando nela o Resharper mostra uma lista de erros. (E, não, eu já disse que não ganho nada com o Resharper!)

Outra coisa interessante é que você pode criar seus próprios templates. no exemplo que está sendo chamado o método “Html.EditorFor”? Não é “Html.TextBoxFor”, é EditorFor. Isso significa que o próprio framework vai avaliar qual o melhor controle para exibir. Se for um booleano, por exemplo, ele exibe um checkbox. Mas você também pode controlar isso. Basta criar uma pasta chamada “EditorTemplates” e colocar a classe que fará a edição lá dentro. Assim:

Minhas templates para edição

Nesse caso, fiz um template para DateTime, que coloca o atributo class=”calendario”. Ficou assim:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%=Html.TextBox("", String.Format("{0:d}", Model), new { Class = "calendario"} ) %>

Vejam que o id está sendo passado em branco. Depois o próprio ASP.Net MVC coloca o id correto. Super esperto. Dessa forma, todos as minhas datas estão com o atributo calendário na classe, o que permite eu ligar elas ao datepicker do jQuery.

jQuery datepicker funcionando integrado ao ASP.Net MVC

Antes isso era feito com T4, para facilitar o trabalho, mas o T4 só gerava o código que eu esperava. Dessa forma, não há código algum, e se eu precisar manter, faço isso num lugar só. Bem melhor.

Este é o tipo de funcionalidade que vem para facilitar muito o trabalho.


Postado na(s) categoria(s) ASP.Net MVC pelo Giovanni Bassi em 9 de outubro de 2009 às 09:08 | Tags: ,

Comentários


United States Rodolfo
outubro 9. 2009 10:36
Rodolfo
Esse artigo ta sendo escrito do preview 1 pq vc já o tinha feito antes do lançamento do preview 2? pq já lançaram o preview 2..

no site


outubro 11. 2009 12:33
Giovanni Bassi
Rodolfo, eu sei. Inclusive escrevi que eles lançaram o p2 quando eu já estava falando do p1. Mas nada do p1 sumiu, então...

http://unplugged.giggio.net/http://unplugged.giggio.net/


outubro 15. 2009 01:34
Felipe Fujiy
Essa técnica é muito boa, o único problema é o peso. Qdo saiu o MVC 1 vi uns testes ja sobre os Helpers tipados. codeclimber.net.nz/.../...d-actionlink-helper.aspx
www.slideshare.net/.../aspnet-mvc-performance

A diferença é grande, dependendo do caso acho que vale a pena.

http://blog.fujiy.net/http://blog.fujiy.net/

Comentar


(Vai mostrar seu Gravatar)

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading



Quem é Giovanni Bassi

Giovanni Bassi Sou uma pessoa apaixonada por tecnologia e especificamente por .Net. Sou consultor independente especialista em .Net, focado em arquitetura e melhores práticas. Tenho dezenas de artigos publicados na .Net Magazine, revista da qual sou editor técnico. Ministro palestras e cursos de vez em quando, e quando dá tempo eu respiro um pouco. Mais detalhes nesta página.

Busca

Selos

Eu vou ao TechEd Brasil 2010, e você?

MVP

MCPD

MCSD

.Net Magazine

Abaixo ao if!

Calendário

«  julho 2010  »
seteququsedo
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Ver detalhamento de posts no calendário

Blogs interessantes

    OPMLDownload OPML file

    Postagens recentes

    Comentários recentes

    Disclaimer / Aviso
    As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, pareceiros e amigos. Da mesma forma, os comentários feitos por leitores do blog não expressam a minha opinião.

    © Copyright 2010 .Net Unplugged
    Log in