ASP .NET - Apresentando a Sintaxe Razor para C# e VB .NET


Neste artigo vou apresentar a sintaxe usada pelo Razor, o view engine usado nas aplicações ASP .NET MVC3 e no Web Matrix.

A idéia é mostrar os conceitos básicos usados para utilizar o Razor tanto na linguagem C# como na linguagem VB .NET.

Mas o que vem a ser esse tal de Razor ???

Razor é nome da nova View Engine das aplicações ASP .NET MVC e WebMatrix. (Veja as referências...)

De forma bem objetiva Razor foi criado para simplificar a codificação nas aplicações ASP .NET , pois usando a sintaxe do Razor o código fica mais fácil de digitar, mais simples e legível. (Finalmente podermos abolir o uso  das tags <%= %> no código)

O Razor é bastante 'esperto' e possui um parse que conhece as marcações HTML , a sintaxe da linguagem VB .NET (VBHTML) e C# (CSHTML).

Fique atento que o Razor não é uma nova linguagem; você vai usar os seus conhecimentos d VB .NET ou C# para usar o Razor e não o contrário.

Assim podemos enumeras o seguintes benefícios em usar o Razor:

• A sintaxe Razor é limpa e concisa, o que requer um número mínimo de digitação;
• O Razor é fácil de aprender, em parte porque ele é baseado em linguagens existentes, como C # e Visual Basic;
• O Visual Studio inclui o IntelliSense e colorização de código para a sintaxe Razor;
• As views Razor podem ser testadas de forma unitária sem exigir que você execute o aplicativo ou abra um servidor web;

Além disso o Razor possui os seguintes recursos:

• sintaxe do modelo de @ para especificar o tipo que está sendo passado para a exibição;
@ * * @ sintaxe de comentário;
• A capacidade de especificar os padrões (como layoutpage) uma vez para um site inteiro;
• O método Html.Raw para exibição de texto sem codificação HTML;
• Apoio ao compartilhamento de código entre múltiplas visualizações (arquivos _viewstart.cshtml ou _viewstart.vbhtml);

E para mostrar que o danado chegou cheio de recursos o Razor também possui os seguintes Helpers:

Chart - Processa um gráfico, oferecendo os mesmos recursos como o controle de gráfico no ASP.NET 4;
WebGrid - Processa uma grade de dados, com funcionalidade de paginação e ordenação;
Crypto - Utiliza algoritmos de hash para criar senhas devidamente criptografadas;
WebImage - Processa uma imagem;
WebMail - Envia uma mensagem de e-mail;

O Razor da suporte a linguagem C# e linguagem VB .NET; no primeiro caso a extensão dos arquivos será .cshtml, para o VB .NET a extensão é .vbhtml.

A sintaxe Razor é baseada no ASP .NET que por sua vez baseia-se no .NET Framework.

Dessa forma a curva de aprendizagem é reduzida, e a sintaxe Razor ainda lhe dá todo o poder do ASP.NET, mas com uma sintaxe simplificada e mais fácil de aprender se você é um novato ou lhe dar mais produtividade se você já tiver experiência.

Vejamos os pontos principais da sintaxe Razor:

Obs: Para os exemplos usados neste artigo eu estou usando WebMatrix. (Se não tiver pegue aqui: WebMatrix.)

1 - Para adicionar código em um página você utiliza o caractere @

O caractere @ inicia expressões inline, blocos de instrução única, e blocos com múltiplas instruções.

Obs: A sintaxe VB .NET utiliza a as  @Code e End Code para indicar a abertura e o fechamento de um bloco de código.

Veja na figura 1 o exemplo usando a sintaxe C# e o resultado exibido na figura 2 ao lado:

figura 1 - Exemplo de código usando a sintaxe Razor (C#) figura 2 - Resultado do processamento do código da figura 1

Todo o código que vai ser processado pelo servidor começa com o caractere @ (arroba) ele substitui com vantagens os caracteres <% %> usados desde a versão do ASP.

Para o VB .NET o código acima ficaria assim:

Observe que na sintaxe VB .NET usamos @Code para indicar o início do bloco de código e End Code para indicar o final do bloco.
Note que usamos a palavra reservada Dim para declarar as variáveis no bloco de código ao invés de var.
Note também que tivemos que converter a variável diaDaSemana para String.(ToString());

Em resumo :  O Razor simplifica a digitação pois apenas um caractere @ é usado para indicar ao parse do Razor que o código deve ser processado, e você não precisa mais usar um caractere de controle dizendo que vai interromper o HTML e começar o código C# ou VB .NET.

Em blocos de código do servidor, iniciados com o caractere @(C#) ou @Code(VB.NET), se você desejar exibir um texto, ou tag HTML na página pode fazer o seguinte:

- Colocar o texto em um elemento HTML como um <p></p> ou <em></em> , dessa forma o parse sabe que este texto não deve ser processado;

No código acima ao encontrar a tag <p> o parse sabe que o que vem a seguir não é código a ser processado.

Quando o parse encontra o trecho de código iniciado com caractere @ (@DateTime), ou @Code, ele sabe que este é um código de servidor.

- Usar o operador @: (arroba e dois pontos) para enviar uma única linha de conteúdo contendo texto ou tags HTML únicas (</p>, </br>, etc.) ou usar o elemento <text> para abranger várias linha de saída. Essas opções são úteis quando você não quer processar um elemento HTML como parte da saída. Ex:

Se você quiser exibir várias linhas de saída de texto ou tags HTML tags únicas (</p>, </br>, etc.), você pode preceder cada linha com @:, ou você pode colocar a linha em um elemento <text>. Como o @: operador, as tags <text> são usados pelo ASP.NET para identificar o conteúdo de texto e nunca são processados na saída da página.

Espaços Extras

- Espaços extras em branco em uma declaração (e fora de uma string literal) não afetam a declaração.
Exemplo C# :
@{ var nome =    "Macoratti"; }     Exemplo VB .NET: @Code Dim nome =    "Macoratti"    End Code

- No entanto, você não pode quebrar uma linha no meio de uma seqüência literal. O exemplo a seguir não funciona:

@{ var teste = "Este e uma string
     muito longa"
; }
 // Não funciona!

Em VB .NET você pode quebrar uma instrução de código longa em várias linhas usando o caractere sublinhado _ (que no Visual Basic é chamado o caracter de continuação) depois de cada linha de código.

Para quebrar uma declaração para a próxima linha, no final da linha adicione um espaço e, em seguida, o caractere de continuação e continue a instrução na linha seguinte. Você pode envolver declarações em quantas linhas você precisa para melhorar a legibilidade. As declarações a seguir são os mesmos:

Exemplo VB .NET:

Comentários (para C# e VB .NET)

- Para realizar comentários usando a sintaxe Razor você deve iniciar o comentário com *@ e terminar com um @*
sendo que o comentário pode estar em uma ou várias linhas. Ex:

@*  comentário com uma linha. *@

@*
   
Comentário com mais de uma linha.
   
Macoratti.net quase tudo sobre VB,
    ASP .NET e C# ...
*@  

Declaração de variáveis

Uma variável é um objeto nomeado que você usa para armazenar dados. O nome de uma variável deve começar com um caractere alfabético e não pode conter caracteres em branco ou reservados

Para declarar um variável usando a sintaxe C# você usa a palavra chave var (se não quiser especificar o tipo) ou usar o nome do tipo.:

Exemplo C#:

Para a linguagem VB .NET para declarar uma variável sem especificar um tipo, use a palavra Dim mais o nome da variável (por exemplo, Dim nome). Para declarar uma variável com um tipo, use Dim mais o nome da variável seguido de As e em seguida o nome do tipo (por exemplo, Dim nome As String).

Exemplo VB .NET:

2 - Blocos de código são colocados em chaves {} para o C# e @Code/End Code para o VB .NET

Um bloco de código inclui uma ou mais instruções de código e é colocado entre chaves({}) para o C# e @Code/End Code para o VB .NET.

Exemplo C#:

O mesmo exemplo usando a sintaxe VB .NET ficaria assim:

Observe que na sintaxe VB .NET usamos @code para indicar o início do bloco de código e End Code para indicar o final do bloco.

3. Dentro de um bloco você termina cada instrução do código com um ponto e vírgula na sintaxe C# e com uma quebra de linha na sintaxe VB .NET

Os exemplos acima mostram este comportamento para o C# e o VB .NET.

4. Usando variáveis para armazenar valores com var(C#) e Dim(VB.NET)

Você pode armazenar valores em uma variável, incluindo strings, números e datas, etc.
Você pode criar uma nova variável usando a palavra-chave var para o C# ou usando a palavra reservada Dim para o VB .NET.
E pode inserir valores de variáveis diretamente em uma página usando o caractere @.

Veja os exemplos acima mostrando esta característica.

5. Coloque os valores de seqüência de caracteres entre aspas duplas (" ")

Você coloca os valores de seqüência de caracteres literal entre aspas (Uma string é uma seqüência de caracteres que são tratados como texto). Para especificar uma seqüência, você deve colocá-la entre aspas duplas. Exemplo:

C# VB .NET
 @{ var minhaString = "Esta é uma string literal"; } @Code Dim minhaString = "Esta é uma string literal" End Code

6. O código C# é case sensitive já o código VB .NET não é case sensitive

Em C #, palavras-chave (como var, true, e if) e os nomes das variáveis são case sensitive. Assim na linguagem C#: nome e Nome são variáveis distintas.

Para o VB .NET as variáveis nome e Nome são a mesma variável e também Dim e DIM , If ou if, TRUE ou True ou true reference aos mesmos comandos.

7. Tomando decisões em seu código

Uma característica fundamental de páginas web dinâmicas é que você pode determinar o que fazer com base em condições. A forma mais comum de fazer isso é com a instrução If (e Else opcional).

Exemplo C#:

A declaração If isPost é uma forma abreviada de escrita If isPost == True. Junto com If, há uma variedade de maneiras para testar condições, blocos de repetição de código, e assim por diante...

Exemplo VB .NET:

A declaração If isPost é uma forma abreviada de escrita If isPost = True. Junto com If, há uma variedade de maneiras para testar condições, blocos de repetição de código, e assim por diante...

E com isso procurei apresentar um resumo das principais características da sintaxe Razor para C# e para VB .NET. Para mais detalhes que não foram abordados neste artigo consulte as referências da sintaxe para cada linguagem.

Lembrando que podemos usar o engine Razor em aplicações ASP .NET MVC e no WebMatrix.

Aguarde para os próximos dias o artigo apresentando o ASP .NET MVC 3 usando a sintaxe Razor no view Engine.

Eu sei é apenas Razor  , mas eu gosto...

Referências:


José Carlos Macoratti