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

Projeto .net

Não estou conseguindo deixar o carrossel apresentando apenas 4 itens da lista de produtos , segue o código que estou desenvolvendo :

Esse código está criando um carrossel por categoria , porém não consigo implementar o código que deixa o carrossel apresentando 4 produtos por vez , os demais produtos do carrossel podem ser visualizados através dos botões.

--@{
--   ViewData["Title"] = "Carrosel";
--}
--
--@model List<Produto>;
--
--
--@{ var produtos = Model.ToList<Produto>();
--   List<String> categoria = new List<String>();
--    foreach (var produto in produtos)
--    {
--       var item = produto.Categoria.Nome;
--
--       if (!categoria.Any(x => x.Equals(item)))
--        {
--            categoria.Add(produto.Categoria.Nome);
--        }
--    }
--}
--@{
--    for (int x = 0; x < categoria.Count; x++)
--    {
--        <h3>@categoria[x]</h3>
--        <div id="my-carousel-@x" class="carousel slide" data-ride="carousel">
--            <div class="carousel-inner" role="listbox">
--                    <div class="item active">
--                        <div class="row">
--                            @foreach (var produtosC in produtos)
--                            {
--                                if (categoria[x].Equals(produtosC.Categoria.Nome))
--                                {
--                                    <div class="col-md-3 col-sm-3 col-lg-3">
--                                        <div class="panel panel-default">
--                                            <div class="panel-body">
--                                                <img class="img-produto-carrossel" src="/images/produtos/large_@(produtosC.Codigo).jpg" />
--                                            </div>
--                                            <div class="panel-footer produto-footer">
--                                                <div class="produto-nome">@produtosC.Nome</div>
--                                               <div><h4><strong>@produtosC.Preco</strong></h4></div>
--                                               <div class="text-center">
--                                                    <a asp-action="carrinho" asp-route-codigo="@produtosC.Codigo"
--                                                      class="btn btn-success">Adicionar</a>
--                                                </div>
--                                            </div>
--                                        </div>
--                                    </div>
--                                }
--                            }
--                        </div>
--                    </div>
--            </div>
--            <a class="left carousel-control" href="#my-carousel-@x" role="button" data-slide="prev">
--                <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
--                <span class="sr-only">Previous</span>
--            </a>
--            <a class="right carousel-control" href="#my-carousel-@x" role="button" data-slide="next">
--                <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
--                <span class="sr-only">Next</span>
--            </a>
--        </div>    
--    }
--}
3 respostas
solução!

Olá Marco!

Para mim, essa foi a parte mais difícil do projeto. Acredito que uma boa forma seria você fazer o uso do foreach das categorias e listar os livros referentes a cada categoria (dentro desse foreach). Depois disso, faça uso daquele código (adaptado para a situação) da página de carrossel.

Meu passo a passo foi mais ou menos assim:

  • Listar as categorias apenas uma vez;
  • Listar todos os livros na categoria correta; e por último,
  • Listar apenas 4 livros de cada vez (aplicar o carrossel)

Ah, claro, antes disso, tenha algum lugar para colocar as categorias que já foram varridas no primeiro foreach:

@{
    IList<Categoria> categoria = new List<Categoria>();
}

Com essa lista, facilita bastante o seu código para manipular códigos relativos à categoria.

Espero ter ajudado!

Realizei os seguintes passos e o problema foi solucionado :

Listar as categorias apenas uma vez; IList categoria = new List();

foreach (var produto in produtos)
{
    var item = produto.Categoria;

    if (!categoria.Any(x => x.Equals(item)))
    {
        categoria.Add(produto.Categoria);
    }
}

Listar todos os livros na categoria correta; e por último,

var produtosCategoria = produtos.Where(x => x.Categoria.Id.Equals(itens.Id)).ToList();

Listar apenas 4 livros de cada vez (aplicar o carrossel)

int paginas = (int)Math.Ceiling((double)produtosCategoria.Count() / TAMANHO_PAGINA);

var produtosDaPagina = produtosCategoria.Skip(pagina * TAMANHO_PAGINA).Take(TAMANHO_PAGINA);

Perfeito, meu jovem!

Que bom que conseguiu! Muito sucesso na sua carreira de dev!