Tentei de tudo e mesmo analisando as respostas e tentando de todas as formas eu não consegui fazer atualizar com a função Atualiza do javascript ensinada em aula, o erro que aparece é:
POST http://localhost:49188/Produtos/Decrementa 500 (Internal Server Error)
Abrindo o Erro Aparece:
O dicionário de parâmetros contém uma entrada nula para o parâmetro 'id' de tipo que não permite valor anulável 'System.Int32' para o método 'System.Web.Mvc.ActionResult Decrementa(Int32)' em 'Controle_De_Estoque.Controllers.ProdutosController'. Um parâmetro opcional deve ser um tipo de referência, um tipo que permite valor anulável ou declarado como opcional.
Por favor me ajudem.
Código Da Index dos Produtos:
<script src="~/Scripts/jquery-3.3.1.min.js"></script>
<script>
function Decrementa(produtoID){
var url = "@Url.Action("Decrementa", "Produtos")";
$.post(url, { id: produtoID }, Atualiza);
}
function Atualiza(resposta) {
$("#coluna_quantidade" + resposta.idproduto).html(resposta.quantidade);
}
</script>
@model IList<Controle_De_Estoque.produto>
<table class="table table-hover table-responsive">
<thead>
<tr>
<th scope="col">Código</th>
<th scope="col">Nome</th>
<th scope="col">Preço</th>
<th scope="col">Quantidade</th>
<th scope="col">Ações</th>
</tr>
</thead>
<tbody>
@foreach (var Produto in Model)
{
<tr>
<td>@Produto.idproduto</td>
<td>@Produto.nome</td>
<td>@Produto.preco</td>
<td id="coluna_quantidade@(Produto.quantidade)">@Produto.quantidade</td>
<td>
<a href="#" onclick="Decrementa(@Produto.idproduto)">Menos</a>
</td>
</tr>
}
</tbody>
</table>
Código do Controller:
public ActionResult Decrementa(int id)
{
ProdutoDAO dao = new ProdutoDAO();
produto Produto = dao.BuscaPorID(id);
Produto.quantidade--;
dao.Atualiza(Produto);
return Json(Produto);
}
Código do DAO:
public produto BuscaPorID(int id)
{
using (var context = new EstoqueEntityDB())
{
return context.produtoes.Include("categoriaproduto").Where(p => p.idproduto == id).FirstOrDefault();
}
}
public void Atualiza(produto Produto)
{
using (var context = new EstoqueEntityDB()) {
context.Entry(Produto).State = System.Data.Entity.EntityState.Modified;
context.SaveChanges();
}
}