terça-feira, 22 de janeiro de 2013

Usando EditorTemplates e DisplayTemplates - parte II

Na Parte I desta série nós criamos dois templates para os tipos DateTime e Decimal.

O mais legal dessa abordagem de sobreposição de templates ("override" em inglês) é que nos seus sistemas todos os tipos DateTime e Decimal terão seu HTML renderizado de acordo com os templates acima não importa em qual view ou de que objeto veio a propriedade. Basta usar @Html.EditorFor(m => m.TipoDateTime).

Você pode também fazer templates para tipos complexos mas isto vai ser assunto para um outro post desta série.

Ok, feita a introdução técnica voltemos ao assunto deste post, agora vamos aplicar alguma "perfumaria" no nosso formulário para fazê-lo mais agradável para o usuário.

Para isso vamos usar o jQuery e o jQuery UI. Essas bibliotecas javascript já são adicionadas em seu projeto por padrão no ASP.NET MVC e vou partir do pressuposto que você já sabe alguma coisa em jQuery, se não sabe recomendo enfaticamente que você aprenda a usá-lo. É um recurso imprescindível nas aplicações web modernas.

Adicione as referências para o css e o jquery/jquery-ui na view \Views\Shared\_Layout.cshtml.

Para aplicar o widget DatePicker do jQueryUI nos campos criados pelos templates basta fazer uma chamada no jquery:


Veja o resultado:
Ôpa, mas este blog é em português! Como faz pra traduzir os termos do calendário e formatar a data para o pt-BR?

Adicione o script de inicialização do datepicker abaixo (de preferência em algum local ou escopo onde possa ser visto por toda sua aplicação):



Recarregue sua app e veja o resultado:

Simples e rápido hem? Agora toda propriedade que você usar do tipo DateTime nas views da sua aplicação já virão embutidas com um calendário bacana - usabilidade para as massas oh yeah!!!

Falta agora fazer a máscara para o tipo Decimal. Um brasileiro, o Fabio M. Costa criou um jQuery plugin excelente para criar máscaras para campos, inclusive os padrões da biblioteca são no formato pt-BR o que facilita bastante.

Para mais detalhes e download confira a página original do meioMask plugin.

Como o post está ficando grande vamos direto ao código para usar o plugin citado acima e aplicar a máscara na nossa propriedade do tipo Decimal:

Adicione a referência ao arquivo meioMask plugin na view:


Agora basta chamar a função setMask do plugin na inicialização do jQuery:

Não tem como mostrar estaticamente aqui o funcionamento da máscara, baixe o projeto desta série de posts e confira o resultado rodando a aplicação.

Clique aqui para fazer o download do projeto!

No próximo e último post desta série vamos criar um template para um tipo complexo e explicar o funcionamento dos DisplayTemplates.


segunda-feira, 21 de janeiro de 2013

Usando EditorTemplates e DisplayTemplates - parte I

Uma das coisas mais repetidas hoje em dia no mundo da programação, desculpem a redundância, é o conceito de não repita seu código. Em inglês DRY (don't repeat yourself).

O ASP.NET MVC leva esse conceito muito a sério e tem no seu núcleo as ferramentas necessárias para você reutilizar código de forma eficiente e simples.

Nesta série vamos aprender a utilizar os DisplayTemplates e EditorTemplates para reutilizar código nas nossas views e também uniformizar elementos HTML.

Outra vantagem desta técnica é usar o código HTML gerado pelos templates para aplicar widgets em javascript e melhorar sensivelmente a usabilidade das nossas aplicações web.

Estando claro o objetivo do post vamos por a mão na massa

Vou deixar de lado a parte de criar o projeto MVC, Visual Studio, etc. Se você está aqui é porque já sabe fazer isso, se não sabe consulte o post de boas vindas. Lembrando que a versão do MVC utilizada nesta série é a versão 3 com a viewengine razor.

Primeiro vamos criar um modelo para usarmos como teste, crie um arquivo com o nome "SampleModel.cs" dentro da pasta Models:

Crie dentro da pasta \Views\Shared do seu projeto as seguintes pastas: DisplayTemplates e EditorTemplates.


Dentro da pasta EditorTemplates crie dois arquivos DateTime.cshtml e Decimal.cshtml. Um deles será o template para as datas e outro para os tipos com casas decimais.



Fig. 1: estrutura do projeto após a criação dos arquivos






Agora vamos ao código dos arquivos criados:


Beleza, a estrutra básica está pronta, agora podemos usar os templates nas views. Para isto basta usar o @Html.EditorFor:

O HTML gerado:


No próximo post desta série vamos adicionar javascript para criar um calendário para o usuário escolher a data e aplicar uma máscara no campo de preço.

Baixe o código fonte deste tutorial




Bem vindo ao Pílulas MVC

Olá,

Esse blog não tem a intenção de ensinar os conceitos do ASP.NET MVC, o que queremos aqui é produzir tutoriais para quem já usa a ferramenta mas está iniciando.

Ou seja, se você já sabe como criar um projeto, compilar e rodar o mesmo você está no lugar certo.

Se você ainda não conhece o framework e quer saber mais segue uma lista de links úteis para você começar a programar usando esse framework veloz, flexível e de fácil manutenção que está revolucionando a programação para web na plataforma windows:

Introdução ao conceito de MVC: http://pt.wikipedia.org/wiki/MVC
Página oficial da Microsoft: http://www.asp.net/mvc
Fórum MSDN oficial em português: http://social.msdn.microsoft.com/Forums/pt-br/mvcpt/threads