Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Código null

Quando a página carrega e adiciono um produto no carrinho, na action carrinho o codigo vem como null!!

Alguém me ajuda?? Já tentei revisar tudo e nada

7 respostas

Roberta, tudo bom?

Compartilha o código, use o botao "<> INSERIR CÓDIGO".

A action que recebe a requisição está assim:

public IActionResult Shopping(string code)
        {
            if (!string.IsNullOrEmpty(code))
            {
                requestRepository.AddItem(code);
            }

            Request request = requestRepository.GetRequest();
            List<RequestItem> items = request.Items;
            ShoppingViewModel shoppingViewModel = new ShoppingViewModel(items);

            //injetar na view os itens do repositório
            return base.View(shoppingViewModel);
        }

A minha view de carrinho está assim:

@{
    ViewData["Title"] = "Carrinho";
}

@model ShoppingViewModel;

<h3>Meu Carrinho</h3>

<form method="post" asp-action="shopping"></form>

<div class="panel panel-default">
    <div class="panel-heading">
        <div class="row">
            <div class="col-md-6">
                Item
            </div>
            <div class="col-md-2 text-center">
                Preço Unitário
            </div>
            <div class="col-md-2 text-center">
                Quantidade
            </div>
            <div class="col-md-2">
                <span class="pull-right">
                    Subtotal
                </span>
            </div>
        </div>
    </div>
    <div class="panel-body">
        @foreach (var item in Model.Items)
        {
            <div class="row row-center linha-produto" item-id="@item.ID">
                <div class="col-md-3">
                    <img class="img-produto-carrinho" src="~/images/products/large_@(item.Product.Code).png" />
                </div>
                <div class="col-md-3">@item.Product.Name</div>
                <div class="col-md-2 text-center">R$ @(item.UnitPrice)</div>
                <div class="col-md-2 text-center">
                    <div class="input-group">
                        <span class="input-group-btn">
                            <button class="btn btn-default"
                                    onclick="shopping.clickDecremento(this)">
                                <span class="glyphicon-minus"></span>
                            </button>
                        </span>
                        <input type="text" value="@(item.Amount)" 
                               class="form-control text-center"
                               onblur="shopping.updateAmount(this)"/>
                        <span class="input-group-btn">
                            <button class="btn btn-default"
                                    onclick="shopping.clickIncremento(this)">
                                <span class="glyphicon-plus"></span>
                            </button>
                        </span>
                    </div>
                </div>
                <div class="col-md-2">
                    R$ <span class="pull-right" subtotal>
                        @(item.Amount * item.UnitPrice)
                    </span>
                </div>
            </div>
        }
    </div>
    <div class="panel-footer">
        <div class="row">
            <div class="col-md-10">
                <span numero-itens>
                    TOTAL: @(Model.Items.Count())
                    Items
                </span>
            </div>
        </div>
    </div>
</div>

@section Scripts
{
    <script src="~/js/shopping.js"></script>
}

Olá Roberta, tudo bem?

Tem como compartilhar seu código via Dropbox, Google Drive ou Github, para que eu possa dar uma olhada?

No aguardo!

Coloquei ele no git

https://github.com/RobertaAlves1/BookECommerce.git

Obrigada desde já pela ajuda

solução

Olá Roberta, tudo bem?

Desculpe a demora, mas estava apanhando com o código, por pensar de forma complexa e o problema era bem simples. Na verdade o problema ocorreu por misturar código em português e inglês.

Na sua classe Startup a rota padrão está assim: template: "{controller=Request}/{action=Carrossel}/{code?}");

No botão do produto do carrossel tem a seguinte chamada para a rota: asp-route-codigo="@produto.Code", mas para essa rota funcionar, deve ter o mesmo nome da rota deve ser igual ao da rota padrão: asp-route-code="@produto.Code".

Espero ter ajudado!

Muito obrigada

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software