0
respostas

Resolvendo erros de "Alterar quantidade" no carrinho

Por conta da grande quantidade de dúvidas aqui no fórum sobre as funcionalidades de alteração de quantidades de itens pedidos no carrinho (carrinho.cshtml -> PedidoController - Aula2) deixo aqui um compacto de soluções que funcionaram para mim em diversos casos:

1 - Não recebo a quantidade eviada para o pedidoController :

isso ocorre por conta de erro de serialização com o valor da quantidade alterada, a correção está abaixo:

No carrinho.cshtml, nas requisições, alterar para:

$.ajax({
                url: "/Pedido/Updatequantidade",
                type: "POST",
                contentType: "application/json",
                dataType: "json",
                data: JSON.stringify(data)
            });

no Startup adicionar o NewtonSoftJson (necessário instalar o pacote pelo Nuget) na configuração de serviços:

services.AddControllersWithViews().AddNewtonsoftJson();

2 - Meu pedido altera no banco, mas não na tela, mesmo após atualizar:

Isto ocorre por conta de um problema no método GetPedidoId da classe PedidoRepository não capturar o id correto da Sessão, o que faz criar um novo pedido no decorrer do método. O erro está relacionado tanto À versão do .NET Core utilizada, quanto nas configurações padrão inseridas no Startup.cs do projeto

Correção:

altere a seguinte expressão no Startup.cs de:

services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

para:

services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => false;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

no método ConfigureServices

Mais detalhes: https://www.codeproject.com/Questions/1274949/Session-is-not-working-on-NET-core-2-1

Se sua versão do .NET core for diferente da utilizada no projeto mostrado pelo professor (.NET Core 2.0), analise com o projeto original se não está utilizando alguma config de serviço de CompatibilyVersion no ConfigureServices do Startup.