Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Falha no PostQuantidade após incluir [ValidateAntiForgeryToken] em PostQuantidade do PedidoController

Na página http://localhost:62806/Pedido/Carrinho?produtoId=2, ao clicar no sinal de + ou - ocorre o erro: "Failed to load resource: the :62806/pedido/PostQuantidade the server responded with a status of 400 (Bad Request)"

Carrinho.cshtml

@{ 
    ViewData["Title"] = "Carrinho";
}
@model CasaDoCodigo.Models.ViewModels.CarrinhoViewModel
<h3>Meu Carrinho</h3>

<form method="post">
    @Html.AntiForgeryToken();
</form>
...
    <div class="panel-body">
        @foreach (var item in Model.Itens)
        {
...
                        <span class="input-group-btn">
                            <button class="btn btn-default" 
                                    onclick="carrinho.clickIncremento(this)">
                                <span class="glyphicon-plus"></span>
                            </button>
                        </span>

Carrinho.js

    postQuantidade(data) {
        var token = $('input[name=__RequestVerificationToken]').val();
        var header = {};
        header['RequestVerificationToken'] = token;


        $.ajax({
            url: '/pedido/PostQuantidade',
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(data),
            headers: header
        }).done(function (response) {
            this.setQuantidade(response.itemPedido);
            this.setSubtotal(response.itemPedido);
            this.setTotal(response.carrinhoViewModel);
            this.setNumeroItens(response.carrinhoViewModel);
            if (response.itemPedido.quantidade == 0)
                this.removeItem(response.itemPedido);
        }.bind(this));
    }

PedidoController.cs

        [HttpPost]
        [ValidateAntiForgeryToken]
        public UpdateItemPedidoResponse PostQuantidade([FromBody]ItemPedido input)
        {
            return _dataService.UpdateItemPedido(input);
        }
1 resposta
solução!

Olá, Fábio

Aparentemente, seu código está igual ao da aula. O que pode ter acontecido então? Muitas vezes o JavaScript antigo fica no cache do browser, e suspeito que possa ser isso. Então você pode forçar a limpeza do cache dos arquivos JavaScript do navegador pressionando CTRL+F5 na página da aplicação. Isso vai forçar a recarga do arquivo JavaScript novo.

Se ainda assim não funcionar, você pode baixar o projeto da Aula 5 e testá-lo, comparando com seu código atual.

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