2
respostas

O form para adicionar nao funciona

No projeto final form para adicionar novos produtos nao funciona. Pelo que percebi depois que adicionou a Rota produtos/{id}.

2 respostas

Favor mostrar o código do backend do controller

Talvez faltou no curso o instrutor explicar como funciona a execução das funções porque no actionlink ou route do adicionar ele acaba dando erro em outro método que não esta sendo explicitamente chamado.

using CaelumEstoque.DAO;
using CaelumEstoque.Models;
//using CaelumEstoque.Filtros;
using System.Collections.Generic;
using System.Web.Mvc;
namespace CaelumEstoque.Controllers
{
    //[AutorizacaoFilter]
    public class ProdutoController : Controller
    {
        //
        // GET: /Produto/

        [Route("produtos", Name = "ListaProdutos")]
        public ActionResult Index()
        {
            object usuarioLogado = Session["usuarioLogado"];
            if (usuarioLogado != null)
            {
                ProdutosDAO dao = new ProdutosDAO();
                var produtos = dao.Lista();
                return View(produtos);
            }
            else
            {
                return RedirectToAction("Index", "Login");
            }
        }
        public ActionResult Form()
        {
            ViewBag.Produto = new Produto();
            CategoriasDAO dao = new CategoriasDAO();
            IList<CategoriaDoProduto> categorias = dao.Lista();
            ViewBag.Categorias = categorias;
            return View(categorias);
        }

       [HttpPost]
        public ActionResult Adiciona(Produto produto)
        {
            int idDaInformatica = 1;
            if (produto.CategoriaId.Equals(idDaInformatica) && produto.Preco < 100)
            {
                ModelState.AddModelError("produto.InformaticaComPrecoInvalido", "Produtos da categoria informática devem ter preço maior do que 100");
            }
            if (ModelState.IsValid)
            {
                ProdutosDAO dao = new ProdutosDAO();
                dao.Adiciona(produto);
                return RedirectToAction("Index");
            }
            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 = 99)
        {
            if(id == 99)
            {
                return RedirectToAction("Adiciona","Produtos");
            }
            ProdutosDAO dao = new ProdutosDAO();
            Produto produto = dao.BuscaPorId(id);
            ViewBag.Produto = produto;
            return View();
        }

        public ActionResult Visualiza()
        {
            return View();
        }   

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