TOC

This article is currently in the process of being translated into Portuguese (~55% done).

Razor:

Introduction

Quando a Microsoft criou o "framework" ASP.NET MVC, ele usava páginas WebForms para exibir conteúdo. No entanto, WebForms não tinha a flexibilidade com que as pessoas estavam acostumadas em outros "frameworks" - havia excessivo overhead nas formas de ViewState, controles do servidor, etc... Portanto a Microsoft decidiu implentar uma linguagem/máquina de exibição muito mais simples e leve para seu "framework" MVC. Eles a chamaram "Razor", e ela foi publicada em janeiro de 2011, como parte da versão 3 do ASP.NET MVC.

Razor permite que você escreva em vários "dialetos", com base na sua linguagem .NET favorita. Neste estudo ("tutorial"), vamos focar na versão "C#" atual do Razor, mas você pode usar Razor também com VB.NET.

Por que usar Razor?

A maior vantagem da Razor é o fato de que você pode misturar markup (HTML) do lado "cliente" com código no lado do servidor (ex: C# ou VB.NET), sem ter de explicitamente ficar pulando entre os dois tipos de sintaxe. Por exemplo, considere essa amostra de página em ASP.NET WebForms:

<p>Hello, world - my name is <%= name %> and the current date is: <%= DateTime.Now.ToString() %></p>

In Razor, you can reference server-side variables etc. by simply prefixing it with an at-character (@). The above example, written with Razor instead, would look like this:

<p>Hello, world - my name is @name and the current date is: @DateTime.Now.ToString()</p>

Now obviously this basic example doesn't save you a ton of keystrokes, but in the long run, this makes it a lot easier and much faster to build your pages and combine markup with code. This becomes more obvious when you want to do something slightly more advanced, like making a conditional statement in your view:

<%
if(Request.QueryString["test"] != null)
{
%>
    <p>Lots of markup here...</p>
    <p>Test value: <b><%= Request.QueryString["test"] %></b></p>
    <p>And even more here...</p>
<%
}
%>

In Razor, you could achieve the same like this:

@if(Request.QueryString["test"] != null)
{
    <p>Lots of markup here...</p>
    <p>Test value: <b>@Request.QueryString["test"]</b></p>
    <p>And even more here...</p>
}

Summary

As you can see from the above examples, Razor simply makes it a whole lot easier to combine markup and code. In the next couple of chapters, we'll take a deeper look into the Razor syntax and how it works.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!