O Razor sem dúvidas foi umas das melhores ferramentas que vieram do MVC (surgiu na versão 3), fazendo com que a geração de templates – praticamente para qualquer tipo de documento – uma tarefa fácil. Com ele é possível gerar a templates tipados, criar helpers, facilitando muito o trabalho. Mas o foco do artigo não é falar sobre o Razor em si mas, como habilitar a pré-compilação no Visual Studio. Todo seu código esta disponível open source http://aspnetwebstack.codeplex.com/.
No desenvolvimento das views no MVC, geralmente nos deparamos com o problemas de só perceber que a view esta com erro de compilação quando acessamos ela, isso por que elas não são compiladas na hora que você gera o projeto.
Tendo a model Pessoa:
public class Pessoa
{
public int Id { get; set; }
public string Nome { get; set; }
public string Email { get; set; }
}
A controller Home:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new List<Pessoa>
{
new Pessoa { Id = 1, Nome = "João Mello", Email = "jgnmello@gmail.com" },
new Pessoa { Id = 2, Nome = "Scoot", Email = "scoot@scoot.com" },
new Pessoa { Id = 3, Nome = "Norton", Email = "norton@virus.com" },
new Pessoa { Id = 4, Nome = "Jack", Email = "jack@denels.com" },
new Pessoa { Id = 5, Nome = "Heike", Email = "heike@heiken.com" }
});
}
}
E a view com a propriedade Telefone (isso geralmente acontece… rsrsrs)
@model IEnumerable<Razor.Models.Pessoa>
@{
ViewBag.Title = "Index";
}
<h2>Pessoas</h2>
<table>
<tr>
<td>Id</td>
<td>Nome</td>
<td>Email</td>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Id</td>
<td>@item.Nome</td>
<td>@item.Telefone</td>
</tr>
}
</table>
Se você compila o projeto, vera que só percebera o erro quando for rodar a view. Entretanto, há como habilitar que as views sejam pré-compiladas. Basta seguir os passos a seguir:
1 – Unload Project
2 – Edit .csproj
3 – Sete a propriedade MvcBuildViews para true
Faça o reload no projeto, e tente compilar novamente com a propriedade errada na view. Você vera que gerou um erro de compilação.
Só que, isso acaba fazendo seu build ficar mais lento. Aconselho fazer algumas vezes ao dia, ou colocar no servidor de build, ja que erros desse tipo são pegos apenas quando acessado a página e o refectoring não atual sobre as views.
Por enquanto era isso, até a próxima!
