ASP.NET MVC 3: Conhecendo a View Engine Razor

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.

2 comentários em “ASP.NET MVC 3: Conhecendo a View Engine Razor

Adicione o seu

Participe! Vamos trocar uma ideia sobre desenvolvimento de software!

Blog no WordPress.com.

Acima ↑