Não esta funcionando a função decrementa no exercício sobre AJAX segue controller produto e a view Index:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CaelumEstoque.DAO;
using CaelumEstoque.Models;
namespace CaelumEstoque.Controllers
{
public class ProdutoController : Controller
{
// GET: Produto
[Route("produtos", Name="ListaProdutos")]
public ActionResult Index()
{
ProdutosDAO dao = new ProdutosDAO();
IList<Produto> produtos = dao.Lista();
return View(produtos);
}
public ActionResult Form()
{
CategoriasDAO dao = new CategoriasDAO();
IList<CategoriaDoProduto> categoria = dao.Lista();
ViewBag.Categorias = categoria;
ViewBag.Produto = new Produto();
return View();
}
[HttpPost]
public ActionResult Adiciona(Produto produto)
{
int tipoInfo = 1;
if(produto.CategoriaId.Equals(tipoInfo) && produto.Preco<100)
{
ModelState.AddModelError("produto.Invalido", "Produto de informatica com preco menor que 100");
}
if(ModelState.IsValid)
{
ProdutosDAO dao = new ProdutosDAO();
dao.Adiciona(produto);
return RedirectToAction("index" , "Produto");
}
else
{
ViewBag.Produto = produto;
CategoriasDAO categoriasDAO = new CategoriasDAO();
ViewBag.Categorias = categoriasDAO.Lista();
return View("Form");
}
}
[Route("produtos/{id}", Name="VisualizaProduto")]
public ActionResult Visualiza (int id)
{
ProdutosDAO dao = new ProdutosDAO();
Produto produto = dao.BuscaPorId(id);
ViewBag.Produto = produto;
return View();
}
public ActionResult DecrementaQtd (int id)
{
ProdutosDAO dao = new ProdutosDAO();
Produto produto = dao.BuscaPorId(id);
produto.Quantidade--;
dao.Atualiza(produto);
return Json(produto);
}
}
}
Index:
@model IList<CaelumEstoque.Models.Produto>
<table class="table table-hover">
<thead>
<tr>
<th>Id</th>
<th>Nome</th>
<th>Quantidade</th>
</tr>
</thead>
<tbody>
@foreach (var produto in Model)
{
<tr>
<td>@produto.Id</td>
<td>
@Html.RouteLink(produto.Nome, "VisualizaProduto", 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: produto.Id } , atualiza);
}
function atualiza(resposta)
{
$("#quantidade" + resposta.Id).html(resposta.Quantidade);
}
</script>