Duas semanas atrás nós lançamos a ASP.NET MVC 3 Beta. Ela suporta instalações do tipo "go live" (para colocar no ambiente de
produção) e inclui um conjunto de boas melhorias/aperfeiçoamentos. Você
pode ver um resumo dos novos recursos da ASP.NET MVC 3 no meu post de anúncio da versão beta. Além disso, leia o meu post original sobre a versão de Amostra da ASP.NET MVC 3 para saber mais sobre outros recursos da ASP.NET MVC 3 que apareceram com a versão inicial de pré-lançamento.
Este
post é o primeiro de vários "mini-posts" que vou escrever que falam
sobre alguns dos novos recursos da ASP.NET MVC Beta 3 em mais detalhes. No post de hoje eu vou discutir sobre a nova diretiva @model que agora é
suportada com o novo motor de visões Razor, a qual ajuda a construir
arquivos de visão mais concisos e limpos.
Conceitos Básicos do Razor
A
ASP.NET MVC 3 vem com uma nova opção de motor de visões chamada "Razor"
(além de continuar a suportar/melhorar o motor de visões .aspx
existente).
Você pode aprender mais sobre o Razor, por que o estamos introduzindo, e a sintaxe suportada pelo mesmo a partir do post Apresentando Razor
aqui no meu blog. Se você ainda não leu esse post, separe alguns
minutos e leia-o agora (já que o resto deste post supõe que você o tenha
lido).
Assim que você ler o post Apresentando o Razor, leia também o meu post Apresentando a ASP.NET MVC 3 (Amostra 1) e olhe o exemplo do Razor incluído no mesmo.
Nova diretiva @model
Vamos
agora olhar para uma nova funcionalidade que adicionamos com a ASP.NET
MVC Beta 3 - a diretiva @model. A diretiva @model fornece uma maneira
limpa e mais concisa para referenciar modelos fortemente tipados em
arquivos de visões.
Para vermos esta diretiva em ação, vamos
olhar um cenário super simples onde queremos implementar uma URL
/Products que lista as categorias de produtos a partir de um banco de
dados:
A
seguir está uma implementação simples de um controlador
ProductsController que implementa a URL /Products. Ele recupera uma
lista de categorias de produtos a partir de um banco de dados, e então
passa as mesmas para um arquivo de visão renderizar uma resposta HTML
adequada de volta para o navegador:
Referenciando o Modelo com a primeira Amostra da ASP.NET MVC 3
Se
tivéssemos usado Razor com a primeira Amostra da ASP.NET MVC 3, o nosso
arquivo de visão Index.cshtml teria tido uma declaração @inherits no
topo do arquivo que indicaria que queríamos derivar a visão a partir da
classe "System.Web.Mvc.WebViewPage<TModel>". Indicaríamos então
nossa vontade de que nosso arquivo de visão fosse fortemente tipado,
passando o tipo do modelo da visão para ele:
Isso funciona (e ainda é suportado com a ASP.NET MVC 3) - mas é um pouco verboso.
Referenciando o Modelo usando a ASP.NET MVC Beta 3 e a nova sintaxe @model
Nós
adicionamos uma nova diretiva @model com a ASP.NET MVC Beta 3 que
fornece uma maneira mais limpa e concisa para indicar que você pretende
utilizar classes do modelo fortemente tipadas dentro de seus arquivos de
visão. Agora você pode escrever apenas @model StrongModelType
(tipo fortemente tipado do modelo de dados) no topo do seu arquivo de
visão Razor, e você não precisa ter @inherits (herda de) ou especificar uma classe
de visão base:
A sintaxe acima é, conceitualmente, a mesma de antes (exceto por ter bem menos caracteres). É mais fácil ler e escrever.
A
seguir está o que uma implementação completa da visão Index.cshtml pode
parecer para renderizar nossa screen-shot original mostrada acima:
Uma
pergunta que você pode ter é - meu arquivo de visão deriva de que já que
nada é especificado com respeito a isso? Por padrão, o Razor derivará a
visão a partir da classe base
System.Web.Mvc.WebViewPage<TModel>. Você pode, opcionalmente,
substituir esta classe base padrão (assim como a lista de namespaces que
são importadas por padrão dentro dos arquivos de visão), modificando o
arquivo web.config do seu diretório \Views. Isto te permite manter uma
sintaxe limpa (e DRY) dentro de seus arquivos de visão mesmo se você
tiver criado uma classe de Visão base personalizada que você deseja
usar.
Observação: IntelliSense para código/marcação HTML e
colorização no Visual Studio dentro de arquivos Razor ainda não estão
habilitadas com a versão Beta do começo deste mês. Você vai
ver isto aparecer em poucas semanas no entanto - e haverá suporte
completo para intellisense para HTML, JavaScript, CSS e código C#/VB
dentro de arquivos Razor.
Resumo
Um dos
temas que nós focamos com os lançamentos da ASP.NET MVC 3 e Razor foi
tornar o código que você escreve mais limpo e conciso. A palavra-chave
@model acima é um recurso pequeno, mas contribui elegantemente para
tornar o processo de leitura e escrita de arquivos de visão ainda mais
fácil. Eu estarei cobrindo em posts futuros outras melhorias legais
igual a esta que são novas na ASP.NET MVC Beta 3.
Espero que ajude,
Scott
Texto traduzido do post original por
Leniel Macaferi.