Hoje vamos recordar como criar componentes Blazor para exibir uma lista de itens em uma aplicação Blazor WebAssembly. |
Continuando o artigo anterior vamos agora criar os componentes Blazor na pasta Pages do projeto para exibir os produtos.
Exibindo os produtos
Para iniciar a exibição dos produtos vamos criar o componente MeusProdutos.razor com o código abaixo:
@page "/produtos" @inject IProdutoService ProdutoService
@if(Produtos == null) @if (produtosCount > 0) protected override void OnInitialized() |
Neste código remos o seguinte :
- Estamos
injetando uma instância do serviço criado que iremos usar no componente;
- A seguir usamos o componente ExibirSpinner.razor
- No código,
para obter a lista de produtos, usamos o
método OnInitialized();
- Após verificar se existem produtos usamos o componente
ExibirProdutos.razor para exibir a lista de produtos;
A seguir vamos criar na pasta Pages o componente ExibirProdutos.razor :
@foreach (var item in Produtos) { <div class="col-md-3 mb-2"> <a href="/ProdutoDetalhes/@item.Id"> <div class="card"> <img class="img-thumbnail" src="@item.ImagemUrl"> <div class="card-body"> <h5 class="card-title mb-3"> @item.Nome </h5> <p class="cart-text"> <b>@item.Preco.ToString("C")</b> </p> </div> </div> </a> </div> } @code { |
Neste código usamos os recursos do Bootstrap e usamos um Card para exibir a lista de produtos. Note que temos um link que aciona a rota /ProdutoDetalhes/@item.Id passando o Id do produto selecionado.
Vamos criar o arquivo ProdutoDetalhes.razor.css e definir o código CSS para aplicar um efeito na imagem quando ele for selecionada:
a
{ text-decoration: none; } a:hover
.card
{ .card {transition: box-shadow 0.3s ease-in-out; overflow: hidden; } a:hover img {transform: scale(1.07); transition: 0.5s ease-in-out; } img {transition: 0.5s ease-in-out; } |
Para concluir vamos criar o componente ProdutoDetalhes.razor na pasta Pages que exibe os detalhes de um produto selecionado:
@page "/ProdutoDetalhes/{Id:int}"
@if (Produto == null && MensagemErro == null) @code { public Produto? Produto { get; set; } protected override void OnInitialized() |
Neste componente usamos a instância do serviço injetada para invocar o método GetProdutoPorId() no método OnInitialize() do componente e exibimos o produto. O botão incluir no carrinho é usado apenas para ilustrar e onde você pode implementar um carrinho de compras para tratar a seleção do produto.
Note que injetamos o serviço como um propriedade usando o atributo [Inject]. Essa é uma alternativa para usar a diretiva @inject.
Agora é só alegria, executando o projeto teremos o seguinte resultado:
Pegue o código projeto aqui : BlazorProdutos.zip (sem as referências)
"Sabemos que
permanecemos nele, e ele em nós, porque ele nos deu do
seu Espírito.
E vimos e testemunhamos que o Pai enviou seu Filho para
ser o Salvador do mundo."
1 João 4:13,14
ASP .NET Core - Iniciando com o Blazor
ASP .NET Core - CRUD usando Blazor e Entity ..
Blazor - O novo framework SPA da Microsoft
Visual Studio Code - Suporte ao desenvolvimento Blazor
Vale a pena usar o Blazor
Blazor - Usando o recurso da Virtualização (.NET 5)
Blazor - Conceitos, dicas e truques valiosos - I