Razor C# (Como funciona para desenvolvedores)
Razor é uma linguagem de marcação do lado do servidor usada para criar páginas web dinâmicas com o .NET Core e o .NET Framework. É usado principalmente em conjunto com o ASP.NET Core. Razor Pages são um novo recurso do ASP.NET Core que oferece uma maneira limpa e direta de organizar o código em aplicativos, reduzindo o problema de duplicação de código. O Razor combina o uso de C# ou VB (Visual Basic) no lado do servidor com HTML para criar conteúdo web.
Este tutorial irá guiá-lo na criação de uma aplicação básica usando Razor com C# no Visual Studio. Vamos começar!
Pré-requisitos
Antes de mergulharmos no mundo do Razor, certifique-se de ter os seguintes softwares instalados:
- SDK do .NET Core
- Visual Studio
Esses arquivos são necessários, pois fornecem o mecanismo Razor View e os modelos de projeto que usaremos neste tutorial. Além disso, elas podem funcionar em vários sistemas operacionais, o que significa que você pode acompanhar independentemente de estar usando Windows, Linux ou macOS.
Passo 1: Criando um novo projeto do Razor Pages
Abra o Microsoft Visual Studio e siga estes passos:
- Clique em "Arquivo" > "Novo" > "Projeto".
-
Na tela de seleção do modelo de projeto, escolha "Aplicativo Blazor Server".

-
Dê o nome de "IronPDFExample" ao seu projeto e clique em "Criar".

-
Selecione ".NET 7.0" ou posterior nas listas suspensas.

Você agora tem um novo projeto do Razor Pages.
Entendendo a sintaxe e os arquivos do Razor
Os arquivos Razor usam a extensão de arquivo .cshtml, combinando C# (daí o 'cs') com HTML. Se estivéssemos usando Visual Basic, a extensão do arquivo mudaria para .vbhtml.
No seu Explorador de Soluções, localize e abra o arquivo com extensão .cshtml chamado "Index.cshtml". É aqui que você verá uma combinação de código HTML e código C#. Essa mistura é possível graças ao Razor Parser.
Sintaxe Razor
A sintaxe Razor no ASP.NET Core é uma combinação de HTML e código do lado do servidor. O código do servidor é em C# ou VB. O código Razor é representado pelo símbolo @ e é executado no servidor antes que o HTML seja enviado ao cliente.
Um exemplo de sintaxe Razor simples:
<p>The current time is @DateTime.Now</p>
<p>The current time is @DateTime.Now</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> The current time is @DateTime.Now</p>
Neste exemplo de código, @DateTime.Now é um código Razor . O comando é executado no servidor, sendo a data e hora substituídas pelas atuais antes de ser enviado ao cliente.
Visão da Razor
O termo "visualização" em Razor corresponde a qualquer página da web destinada a apresentar informações ao usuário. O Razor View Engine é responsável por renderizar a página HTML para o usuário.
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
page model ReadOnly Property () As IndexModel
ViewData("Title") = "Home page"
End Property
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<div class="text-center"> <h1 class="display-4"> Welcome</h1> <p> Learn about <a href="https://docs.microsoft.com/aspnet/core"> building Web apps @with ASP.NET Core</a>.</p> </div>
Utilizando Razor Markup para conteúdo dinâmico
O Razor Markup permite inserir código do lado do servidor em nossa marcação HTML. Podemos usar várias construções de código, como blocos de código, expressões embutidas e expressões codificadas em HTML.
Expressão embutida
Uma expressão inline exibe o resultado diretamente no HTML usando o seguinte código:
<p>Hello, my name is @Model.Name</p>
<p>Hello, my name is @Model.Name</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> Hello, my name is @Model.Name</p>
Aqui, @Model.Name é uma expressão embutida que exibe o valor da propriedade Name do modelo passado para a view Razor .
Bloco de código
Blocos de código são segmentos de código que são executados no servidor:
@{
var name = "IronPDF";
}
<p>Hello, my name is @name</p>
@{
var name = "IronPDF";
}
<p>Hello, my name is @name</p>
@
If True Then
Dim name = "IronPDF"
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> Hello, my name is @name</p>
Neste exemplo de código, o código Razor entre { } é um bloco de código.
Estruturas de Controle
Também podemos usar estruturas de controle, como instruções if e loops, em nossas Razor Pages:
@{
var count = 5;
}
@if (count > 3)
{
<p>The count is greater than 3.</p>
}
@{
var count = 5;
}
@if (count > 3)
{
<p>The count is greater than 3.</p>
}
@
If True Then
Dim count = 5
End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@if(count > 3)
'{
' <p> The count is greater than 3.</p>
'}
No exemplo de código acima, a instrução if faz parte do código do lado do servidor que é executado no servidor, e sua saída é inserida na página HTML resultante.
Declaração Switch
As instruções switch são um tipo de estrutura de controle condicional na linguagem de programação C#. Eles podem ser usados dentro de blocos de código.
@{
var fileFormat = "PDF";
var message = "";
switch (fileFormat)
{
case "PDF":
message = "You selected PDF.";
break;
default:
message = "Invalid selection.";
break;
}
}
<p>@message</p>
@{
var fileFormat = "PDF";
var message = "";
switch (fileFormat)
{
case "PDF":
message = "You selected PDF.";
break;
default:
message = "Invalid selection.";
break;
}
}
<p>@message</p>
@
If True Then
Dim fileFormat = "PDF"
Dim message = ""
Select Case fileFormat
Case "PDF"
message = "You selected PDF."
Case Else
message = "Invalid selection."
End Select
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> @message</p>
Olá Mundo em Razor
Um dos programas mais simples em qualquer linguagem de programação é "Olá, Mundo!". Em Razor, você pode exibir "Olá Mundo" com uma expressão inline simples, como mostrado no exemplo abaixo:
<p>@("Hello World")</p>
<p>@("Hello World")</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> @("Hello World")</p>
Laços em Razor
A sintaxe Razor permite escrever loops, como a instrução foreach. Suponha que você tenha uma lista de nomes que deseja exibir em sua página da web. Você pode conseguir isso com a instrução foreach na sintaxe Razor .
@{
var names = new List<string> { "John", "Doe", "Smith" };
}
@foreach (var name in names)
{
<p>@name</p>
}
@{
var names = new List<string> { "John", "Doe", "Smith" };
}
@foreach (var name in names)
{
<p>@name</p>
}
@
If True Then
Dim names = New List(Of String) From {"John", "Doe", "Smith"}
End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@foreach(var name in names)
'{
' <p> @name</p>
'}
Esta instrução foreach percorre cada nome da lista e o exibe na página da web.
Entendendo as Tag Helpers
Os Tag Helpers no ASP.NET MVC permitem que o código do lado do servidor crie e renderize elementos HTML em arquivos Razor . São um pouco como auxiliares HTML, mas têm uma sintaxe mais parecida com a do HTML. Eles transformam elementos semelhantes a HTML em suas visualizações Razor na marcação HTML enviada ao navegador do cliente. Considere o seguinte exemplo de código de um auxiliar de tag de âncora:
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Index">Home</a>
Gerenciando a interação do usuário
As Razor Pages utilizam métodos de tratamento para gerenciar as interações do usuário. Por exemplo, para lidar com o envio de formulários, podemos criar um método chamado OnPostAsync no arquivo Page Model correspondente da nossa Razor Page.
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
// Perform some operation here
return RedirectToPage("./Index");
}
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
// Perform some operation here
return RedirectToPage("./Index");
}
Public Async Function OnPostAsync() As Task(Of IActionResult)
If Not ModelState.IsValid Then
Return Page()
End If
' Perform some operation here
Return RedirectToPage("./Index")
End Function
Comentários em Razor
O Razor também suporta comentários no estilo C#. Lembre-se, os comentários Razor são processados no servidor, ou seja, não são enviados para o navegador. Eles têm esta aparência:
@* This is a Razor comment *@
@* This is a Razor comment *@
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@* This is a Razor comment *@
E este é um comentário com várias linhas:
@*
This is a multi-line Razor comment.
It's useful when you have a lot to say.
*@
@*
This is a multi-line Razor comment.
It's useful when you have a lot to say.
*@
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@* This is a multi-line Razor comment.It's useful @when you have a lot @to say. *@
As visualizações e páginas do Razor podem incluir comentários HTML. Esses comentários ficam visíveis na saída HTML enviada ao navegador.
Passando modelos para uma página Razor
O Razor permite que você passe modelos do servidor para a página. A diretiva @model é usada para especificar o tipo de objeto que está sendo passado. Essa propriedade do modelo pode ser acessada na página Razor , como mostrado no exemplo abaixo:
@page
@model ExampleModel
<h2>@Model.Title</h2>
<p>@Model.Description</p>
@page
@model ExampleModel
<h2>@Model.Title</h2>
<p>@Model.Description</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@page @model ExampleModel <h2> @Model.Title</h2> <p> @Model.Description</p>
Gerando PDFs com IronPDF no Razor
Descubra o IronPDF for .NET , uma biblioteca popular que permite aos desenvolvedores gerar PDFs a partir de HTML , imagens e até mesmo páginas da web existentes em .NET. É uma excelente ferramenta para criar relatórios, faturas e qualquer outro documento que exija um formato de impressão padrão. O IronPDF funciona perfeitamente dentro dos frameworks ASP.NET MVC e ASP.NET Razor Pages.
Instalação
Primeiro, você precisa instalar o pacote IronPDF . Você pode fazer isso a partir do Console do Gerenciador de Pacotes NuGet no Visual Studio. Execute o seguinte comando:
Install-Package IronPdf
Criando um PDF simples
Agora, vamos criar um PDF simples a partir de código HTML dentro da sua Razor Page. Primeiro, vamos importar o namespace IronPDF no topo da sua página Razor .
@using IronPdf;
@using IronPdf;
Dim IronPdf As [using]
Em seguida, você pode usar o IronPDF para criar um PDF. Digamos que temos um botão em nossa página Razor que, ao ser clicado, cria um PDF simples.
No manipulador correspondente em nosso arquivo Page Model, podemos adicionar o seguinte código:
@page "/pdf"
@using IronPdf;
@inject IJSRuntime JS
<PageTitle>Create PDF</PageTitle>
<h1>Create PDF</h1>
<div class="form-outline">
<button class="btn btn-primary mt-3" @onclick="CreatePDF">Create PDF</button>
</div>
@code {
private string htmlString { get; set; }
private async Task CreatePDF()
{
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A2;
var doc = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
using var Content = new DotNetStreamReference(stream: doc.Stream);
await JS.InvokeVoidAsync("SubmitHTML", "ironpdf.pdf", Content);
}
}
SAÍDA


Conclusão
Você aprendeu com sucesso os conceitos básicos de Razor C# e descobriu como integrar o IronPDF para gerar arquivos PDF em seu aplicativo. Você começou criando um novo projeto no Visual Studio e depois aprendeu a usar a sintaxe Razor para criar páginas web dinâmicas. Você também explorou como o IronPDF pode ser usado para gerar PDFs a partir de código HTML e até mesmo criar Views Razor completas.
Agora, à medida que você continua a desenvolver aplicações mais avançadas, pode aproveitar os poderosos recursos oferecidos pelo IronPDF. Você pode experimentar o IronPDF gratuitamente e, se achar útil, pode adquirir uma licença adequada às suas necessidades.
Perguntas frequentes
Como posso gerar PDFs a partir de HTML usando Razor em C#?
Você pode gerar PDFs a partir de HTML usando Razor em C# com a biblioteca IronPDF. Primeiro, instale o pacote IronPDF, importe o namespace IronPDF e, em seguida, use seus métodos de API, como RenderHtmlAsPdf para converter seu conteúdo HTML em formato PDF.
Qual é o papel da sintaxe Razor no desenvolvimento web?
A sintaxe Razor desempenha um papel crucial no desenvolvimento web, combinando C# ou VB com HTML para criar páginas web dinâmicas. Ela permite que os desenvolvedores escrevam código do lado do servidor que é executado antes do HTML ser enviado ao navegador do cliente, facilitando a integração e a funcionalidade perfeitas.
Como as Razor Pages aprimoram o desenvolvimento de aplicações web?
As Razor Pages aprimoram o desenvolvimento de aplicações web ao fornecer uma maneira estruturada e organizada de gerenciar o código, reduzindo duplicação e complexidade. Elas simplificam o processo de desenvolvimento, permitindo que os desenvolvedores se concentrem na criação de funcionalidades dentro de um formato baseado em páginas.
O que são Tag Helpers e como elas auxiliam no Razor Pages?
Os Tag Helpers no Razor Pages auxiliam permitindo que o código do lado do servidor crie e renderize elementos HTML com uma sintaxe semelhante à do HTML. Isso ajuda a produzir uma marcação HTML limpa e de fácil manutenção, transformando os elementos no servidor antes de enviá-los ao navegador do cliente.
Como posso lidar com as interações do usuário em Razor Pages?
As interações do usuário em Razor Pages são gerenciadas por meio de métodos de tratamento, como OnPostAsync . Esses métodos processam envios de formulários e outras entradas do usuário, permitindo que os desenvolvedores executem operações com base nos dados recebidos dos clientes.
Qual é a importância da diretiva '@model' no Razor?
A diretiva '@model' no Razor é importante porque especifica o tipo de dados do objeto passado para uma página Razor. Isso permite que os desenvolvedores acessem e manipulem as propriedades do modelo diretamente na página, facilitando a vinculação e a interação de dados.
Quais são os benefícios de usar Razor com C# no Visual Studio?
Utilizar Razor com C# no Visual Studio oferece benefícios como a integração da lógica do lado do servidor com HTML, desenvolvimento simplificado por meio do Razor Pages e a capacidade de gerar conteúdo web dinâmico com facilidade. Além disso, o Visual Studio fornece ferramentas e modelos robustos para dar suporte ao desenvolvimento em Razor.
Posso usar a sintaxe Razor tanto para C# quanto para VB?
Sim, a sintaxe Razor pode ser usada tanto com C# quanto com VB (Visual Basic) para combinar lógica do lado do servidor com HTML. Essa flexibilidade permite que os desenvolvedores escolham sua linguagem preferida, aproveitando os recursos do Razor no desenvolvimento web.




