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.