ASP.NET MVC 3: Nova palavra-chave @model no Razor


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:

imagem

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:

imagem

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:

imagem

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:

imagem

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:

imagem

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.

1 Comment

  • Excelente. Desejo ver um modelo completo de site pequeno de notícias. Quando compreender isso, farei questão de propagar.

    Nem dá mais pra chamar de asp, hehehe...

Comments have been disabled for this content.