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

Asp.Net MVC 5, 09. Ajax - Erro ao atualizar decremento.

Olá,

Estou com um problema na view com o método "atualiza(resposta)", quando eu clico em Decrementar o ASP não encontra a referência para o objeto "resposta", não encontrei nenhuma referência nos códigos de exemplo para o objeto "resposta", seguindo a orientação da aula (em texto) no controller o método "DecrementaQtd(int id)" retorna "return Json(produto);"

Os códigos são os mesmos da aula em texto.

''' public ActionResult DecrementaQtd(int id) { ProdutosDAO dao = new ProdutosDAO(); Produto produto = dao.BuscaPorId(id); produto.Quantidade--; dao.Atualiza(produto); return Json(produto); } '''

''' function atualiza(resposta) { alert(resposta.Quantidade); } '''

Obrigado!

7 respostas

Opa Daniel, tudo bem?

Esses exemplos são da apostila do FN-23?

Faz assim: copia o código da sua view e controller todo por favor, pra eu tentar reproduzir aqui e entender o que tá acontecendo (:

Senhores, estou com um problema tambem no mesmo processo pois ao clicar no decrementar o programa decrementa mas nao esta atualizando a lista.

ProdutoController

        public ActionResult DecrementaQtd(int id) 
        {
            ProdutosDAO dao = new ProdutosDAO();
            Produto produto = dao.BuscaPorId(id);

            produto.Quantidade--;
            dao.Atualiza(produto);

            return Json(produto);
        }

Layout

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>SmartCase</title>
    <link rel="stylesheet" href="~/Content/Css/bootstrap.css" />
    <link rel="stylesheet" href="~/Content/Css/Site.css" />
</head>
<body>
    <div class="container">
        <div class="header">
            <ul class="nav nav-pills pull-right">
                <li>@Html.RouteLink("Produtos", "ListaProdutos")</li>
                <li>@Html.RouteLink("Categoria","ListaCategoria")</li>
                <li>@Html.RouteLink("Cadastro Produto","CadastroProdutos")</li>
            </ul>
            <h3 class="text-muted">SmartCase Acessorios</h3>

        </div>
        <div id="Conteudo">
            @RenderBody()

        </div>
    </div>
</body>
</html>

View

@model IList<CaelumEstoque.Models.Produto>
<table class="table table-hover">
            <thead>
                <tr >
                    <th>Id</th>
                    <th>Nome</th>
                    <th>Quantidade</th>
                    <th>Ação</th>
                </tr>
            </thead>
    <tbody>
        @foreach (var produto in Model)
        {
            <tr>
                <td>@produto.Id</td>
                <td>@Html.RouteLink(produto.Nome, "VisualizaProdutos", new { id = produto.Id })</td>
                <td id="Quantidade@(produto.Id)">@produto.Quantidade</td>
                <td><a href="#" onclick="decrementa(@produto.Id);">Decrementar</a></td>
            </tr>

        }

    </tbody>
</table>

<script type="text/javascript"src="~/Scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">

    function decrementa(produtoId)
    {
        var url = "@Url.Action("DecrementaQtd", "Produto")";
        $.post(url,{id : produtoId},atualiza);
    }


    function atualiza(resposta)
    {
        $("#Quantidade" + resposta.id).html(resposta.Quantidade);

    }

</script>

Daniel, em que momento está dando esse problema? Quando você clica em decrementar? Estoura algum erro na tela ou simplesmente não faz nada?

Gabriel, tudo funciona decresce sem problemas mas a função atualiza não atualiza o saldo mas ao dar F5 a quantidade foi de crescida. Não entendi o problema pois ao meu ver esta perfeito. Cheguei a cogitar do aja não está corretamente importados.

continuo nao encontrando o erro quem puder me ajudar tambem estou no aguardo.

solução!

Bom dia! Eu abri o tópico, mas depois acompanhei o vídeo da aula e funcionou.

Thalys, na sua função atualiza em JS altere a propriedade id de resposta para Id (primeira letra maiúscula).

function atualiza(resposta) { $("#Quantidade" + resposta.Id).html(resposta.Quantidade); }

Daniel de certo, muito obrigado pelo apoio.