Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Múltiplos carrosséis em views diferentes.

Olá, em lojas virtuais grandes (Submarino, Amazon, Americanas, etc.) na página de Carrossel existem vários carrosséis separados por departamento, por exemplo.

Tecnologia

Carrossel Aqui

Livros

Carrossel Aqui

Vestuário

Carrossel Aqui

Para implementar isso, com o que temos até agora no curso, eu teria que ficar repetindo código na view de Carrossel, teria uma maneira mais elegante de fazer isso? Separar os carrosséis em diferetes arquivos e chamá-los na controller a partir do mesmo método ou algo assim?

Obg!

6 respostas
solução!

Olá, Marco

Muito interessante sua dúvida! Pena não termos abordado isso no curso.

Bom, o problema que você está colocando pode ser resolvido pela técnica de Partial Views, que são fragmentos de views compartilhadas por páginas diferentes, ou seções diferentes da mesma página (como no seu caso).

Você pode ver a documentação sobre Partial Views original aqui:

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial

Ou se preferir a versão traduzida:

https://docs.microsoft.com/pt-br/aspnet/core/mvc/views/partial

Então, por exemplo, digamos que você tenha criado uma PartialView chamada "CarrosselPartial.cshtml". Para consumir essa mesma partial view em lugares diferentes, você precisa de um comando do Razor @Html.Partial:

...html aqui....

@Html.Partial("CarrosselPartial", tecnologiaViewModel)

...html aqui....

@Html.Partial("CarrosselPartial", livrosViewModel)

...html aqui....

@Html.Partial("CarrosselPartial", vestuarioViewModel)

...html aqui....

Onde cada view model contém somente os produtos específicos de uma área (Tecnologia, Livros, Vestuário).

Espero que tenha ajudado!

Há entendi! Não sabia dessa técnica (Partial Views), vou dar uma olhada e tentar implementar! Obg!

Bem, surgiu outra dúvida, como faço para utilizar vários viewModels e uma mesma view? Vi várias soluções na internet, porém não sei qual é a melhor forma de se fazer visando melhor performance e organização...

Marco, eu criaria uma classe chamada CarrosselViewModel, contendo uma lista de ViewModels, assim:

public class CarrosselViewModel
{
    public IList<CategoriaViewModel> CategoriasViewModel { get; set ; } = new List<CategoriaViewModel> ();
}

E criaria uma classe CategoriaViewModel contendo a viewModel com seus produtos

public class CategoriaViewModel
{
    public string Titulo {get; set;}
    public IList<Produto> Produtos {get; set;}
}

Já na View, você poderia fazer um loop nas categoriasViewModel do CarrosselViewModel:

@foreach (var categoriaViewModel in Model.CategoriasViewModel)
{

@Html.Partial("CarrosselPartial", categoriaViewModel)

}

Show Marcelo! Obg, Estou desenvolvendo um e-commerce para o meu Trabalho de Conclusão da faculdade, o curso está me ajudando muito! Obg!

Show Marcelo! Obg, Estou desenvolvendo um e-commerce para o meu Trabalho de Conclusão da faculdade, o curso está me ajudando muito! Obg!

Excelente, Marco! Fico feliz de ajudar nesse momento importante da sua vida acadêmica! Abraços!