Quem leu meus últimos posts sobre ASP.NET MVC (aqui, aqui e aqui), viu que utilizei o Razor como view engine e resolvi escrever este post para falar um pouco melhor sobre ele.
O Razor foi lançado juntamente com o ASP.NET MVC 3 (e mais uma série de produtos) no início de janeiro de 2011. Um dos seus principais objetivos é tornar o código da view mais limpo.
Sendo assim, um código utilizando a view engine ASPX:
<% foreach (var item in Model) { %> <tr> <td><%: item.Nome %></td> </tr> <% } %>
Fica assim, ao utilizar o Razor:
@foreach (var item in Model) { <tr> <td>@item.Nome</td> </tr> }
Muito mais simples não é? Notem que não é preciso fechar o bloco de código antes de iniciar uma tag Html. O parser do Razor é inteligente para deduzir quando termina o bloco de código server-side e começa o html. Além disso, você precisa digitar apenas um caracter (o ‘@’), ao invés de dois (‘<%’ ou ‘%>’) ou até três (‘<%:’).
Veja como fica a declaração de uma view fortemente tipada com Razor, usando a diretiva @model:
@model IEnumerable<MeuNameSpace.MinhaClasse>
Enquanto na view ASPX, temos algo mais “poluído”:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MeuNameSpace.MinhaClasse>>" %>
Vale deixar claro que o Razor não possui uma linguagem de programação própria. Ao invés disso, ele dá suporte ao uso de C# e VB. As views escritas em C# terão a extensão .cshtml, enquanto as escritas em VB terão a extensão .vbhtml.
Blocos de código
No Razor, é possível usar blocos de códigos com todos os recursos que você utilizaria normalmente em seu arquivo .cs (ou .vb). Para isso basta envolver o código entre chaves:
@{ var a = 5; var b = 6; var soma = a + b; }
Obviamente, você pode exibir o conteúdo de “soma” – <p>@soma</p> – ou até mesmo utilizar a variável “soma” adiante, em outro bloco de código.
ViewStart
Ao criar uma aplicação ASP.NET MVC com Razor, você perceberá a existência do arquivo _ViewStart.cshtml (ou .vbhtml) na raiz da pasta Views. Com ele é possível aplicar código padrão para todas as views contidas na pasta onde ele se encontra (e sub-pastas).
Por default, o _ViewStart.cshtml existente possui a seguinte linha de código:
@{ Layout = "~/Views/Shared/_Layout.cshtml"; }
A linha de código acima informa que todas as views utilizarão a layout page “_Layout.cshtml”, sem que haja necessidade de informá-la em cada view. Isso é possível porque o código do _ViewStart é executado sempre antes da execução do código da view.
Outro detalhe importante é que o escopo do _ViewStart é a pasta onde ele se encontra e todas as suas sub-pastas. Sendo assim, você pode criar um arquivo _ViewStart específico em determinada pasta de um controller e seu código será executado apenas para as views que estão nesta pasta (ou em sub-pastas).
Por fim, “layout page” é o nome usado no Razor para a boa e velha master page.
Conclusão
O Razor é uma view engine robusta, com sintaxe muito mais simples que a view engine ASPX e que, certamente, se tornará a view engine padrão do ASP.NET MVC 3.
Ela possui muitos outros recursos, como as próprias layout pages mencionadas acima, aceita comentários e é totalmente integrada ao VS, com colorização e Intellisense.
Muito bom.
Já estou aguardando o próximo post.
CurtirCurtir
Já estou usando ele !
É Show de Bola
CurtirCurtir