Neste artigo vamos iniciar com o ASP .NET Core Blazor usando o .NET Core 3.0. |
Continuando o artigo anterior veremos como funciona nossa aplicação Blazor criada.
Nota: Responda a enquete : Que tal aprender Blazor ?
Examinando a aplicação Blazor
Executando o projeto iremos obter no navegador o seguinte resultado:
No menu lateral temos 3 opções que irão acionar as 3 páginas na pasta Pages. Sendo que estas páginas são implementadas pelo componente Razor nos arquivos: Index.razor, Counter.razor e FetchData.razor
E cada um desses arquivos implementa um componente Blazor que é compilado e executado no lado do cliente no navegador.
Arquivo Index.razor
Neste código temos um link que aciona o arquivo SurveyPrompt.razor que esta na pasta Shared.
Arquivo Counter.razor
Neste código a página exibe um Button(Click me) que ao ser clicando incrementa o contador. Assim, cada vez que o botão for clicado, o contador é incrementado sem uma atualização de página. Normalmente, esse tipo de comportamento do lado do cliente é tratado via JavaScript; mas aqui, ele é implementado em C# e .NET pelo componente Counter.
A interface do usuário para o componente Counter é definida usando código HTML normal.
Uma requisição para
/counter no navegador, conforme especificado pela
diretiva @page na parte
superior, faz com que o componente
Counter renderize seu conteúdo. Os componentes
são renderizados em uma representação na memória da
árvore de renderização que pode ser usada para atualizar
a interface do usuário de maneira flexível e eficiente.
Cada vez que o botão Click me
for selecionado:
- O evento onclick é
disparado.
- O método IncrementCount é
chamado.
- O currentCount é
incrementado.
- O componente é renderizado novamente.
O runtime compara o novo conteúdo com o conteúdo
anterior e aplica apenas o conteúdo alterado ao DOM
(Document Object Model).
Depois que um componente é definido, o componente pode ser usado para implementar outros componentes. A marcação para usar um componente se parece com uma tag HTML em que o nome da tag é o tipo de componente.
Assim, podemos usar o componente Counter em outro componente. Vamos incluir o componente Counter na página inicial definida pelo componente Index.
Executando o projeto novamente iremos obter:
Usando parâmetros de Componentes
Os componentes também podem ter parâmetros, que são definidos usando propriedades privadas na classe de componentes decorada com o atributo [Parameter]. Use atributos para especificar argumentos para um componente na marcação.
Vamos agora atualizar o componente Counter para ter uma propriedade IncrementaQuantidade cujo valor padrão seja igual a 2.
Abra o arquivo Counter.razor e altere o código conforme abaixo:
Após isso abra o arquivo Index.razor e altere a quantidade de incremento do Counter para 10 definindo um atributo que corresponda ao nome da propriedade do componente para IncrementaQuantidade.
Executando novamente veremos o parâmetro em ação:
Roteamento para componentes
A diretiva @page na parte superior do arquivo Counter.razor especifica que o componente Counter é um endpoint de roteamento. O componente Counter manipula requisições enviadas para /Counter. Sem a diretiva @page, um componente não manipula solicitações roteadas, mas o componente ainda pode ser usado por outros componentes.
Injeção de dependência
Os serviços registrados com o
provedor de serviços do aplicativo estão disponíveis
para os componentes por meio de
injeção de dependência (DI). Os serviços podem
ser injetados em um componente usando a diretiva
@inject.
Dê uma olhada na implementação do componente
FetchData em
FetchData.razor. A diretiva
@inject é usada para injetar uma instância
HttpClient no componente.
Arquivo FecthData.razor
@page "/fetchdata"
@inject HttpClient Http
<h1>Weather forecast</h1>
<p>This component demonstrates fetching data from the server.</p>
@if (forecasts == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Date</th>
<th>Temp. (C)</th>
<th>Temp. (F)</th>
<th>Summary</th>
</tr>
</thead>
<tbody>
@foreach (var forecast in forecasts)
{
<tr>
<td>@forecast.Date.ToShortDateString()</td>
<td>@forecast.TemperatureC</td>
<td>@forecast.TemperatureF</td>
<td>@forecast.Summary</td>
</tr>
}
</tbody>
</table>
}
@code {
WeatherForecast[] forecasts;
protected override async Task OnInitializedAsync()
{
forecasts = await Http.GetJsonAsync<WeatherForecast[]>("sample-data/weather.json");
}
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public string Summary { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
}
|
Nos bastidores, o HttpClient fornecido pelo runtime do Blazor é implementado usando interop JavaScript para chamar a API de busca do navegador subjacente para enviar a requisição (a partir de C#, é possível chamar qualquer biblioteca JavaScript ou API do navegador).
Os dados recuperados são desserializados na variável C# forecasts como uma matriz de objetos do WeatherForecast.
A seguir um laço foreach é usado para renderizar cada instância de forecast como uma linha na tabela.
No próximo artigo veremos como criar um componente em nossa aplicação.
"Porque o reino de Deus não é
comida nem bebida, mas justiça, e paz, e alegria no
Espírito Santo."
Romanos 14:17
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
ASP .NET Core - Criando uma aplicação com Angular 2 - Macoratti.net
ASP .NET Core - Criando uma aplicação Web no ... - Macoratti.net
ASP .NET Core - Iniciando com o Blazor - Macoratti
ASP .NET Core - CRUD usando Blazor e Entity ... - Macoratti
Blazor - O novo framework SPA da Microsoft - Macoratti.net
Visual Studio Code - Suporte ao desenvolvimento Blazor