Segui os passos do vídeo, mas a TD que mostra a quantidade não está atualizando sozinha com os dados recebidos do servidor. Só atualiza o campo quando atualizo a página.
Segue meu código html e Jquery:
@model IList<CaelumEstoque.Models.Produto>
<table class="table table-hover">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Quantidade</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var produto in Model)
{
<tr>
<td>@produto.Id</td>
<!--Html.ActionLink(texto que será apresentado na página html, "página que vai ser direcionado ao ser clicado", new { id = valor que será passado para a página que foi redirecionada})-->
<td>@Html.ActionLink(produto.Nome, "Visualiza", new { id = produto.Id })</td>
<!--Html.RouteLink(produto.Nome, "VisualizaProduto", new { id = produto.Id })</td>-->
<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){
//cria uma variável que recebe a url que será feita a requisição. Url.Action("Nome da Action", "controller que controla a Action")
var url = "@Url.Action("DecrementaQtd", "Produto")";
//informa que tipo de envio será feito (Get ou post), recebe como argumento a variável url que contém o caminho da url que vai tratar a requisição e o id do produto que será afetado
//chama a função atualiza criada abaixo.
$.post(url, { id: produtoId }, atualiza);
}
//cria uma função que atualiza o campo "produto.quantidade" da tabela
function atualiza(resposta){
//cria uma variável que recebe o valor do campo com id="quantidade" com o Id do produto e devolve a quantidade do produto que tem no servidor
$("#quantidade" + resposta.Id).html(reposta.Quantidade);
}
</script>
Segue código do Controller:
public ActionResult DecrementaQtd(int id)
{
ProdutosDAO dao = new ProdutosDAO();
Produto produto = dao.BuscaPorId(id);
produto.Quantidade--;
dao.Atualiza(produto);
//return RedirectToAction("Index");
//transforma o retorno em objeto javascript podendo ser manipulado por comandos javascript
return Json(produto);
}