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

Introdução ao ASP NET MVC - 4. Lidando com Formulários e o Cadastro de produtos EX7

Introdução ao ASP NET MVC - 4. Lidando com Formulários e o Cadastro de produtos EX7.Implemente o cadastro de categorias dentro do CategoriaController.

Ao clicar no botão cadastra ele inclui o id de uma nova categoria mas nao exibe nome nem descricao.

Id Nome Descricao 1 Informática Produtos relacionados com computação 2 Papelaria Produtos de papelaria

3

4

Codigo do Controler categoria:

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 CategoriaController : Controller
    {
        // GET: Categoria
        public ActionResult Index()
        {
            CategoriasDAO dao = new CategoriasDAO();
            IList<CategoriaDoProduto> categorias = dao.Lista();
            ViewBag.Categorias = categorias;
            return View();
        }

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

        [HttpPost]
        public ActionResult Adiciona(CategoriaDoProduto categoria)
        {
            CategoriasDAO dao = new CategoriasDAO();
            dao.Adiciona(categoria);

            return RedirectToAction("Index");
        }
    }
}

===============================

Código Index Categoria

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div> 
        <table>
            <thead>
                <tr>
                    <th>Id</th>
                    <th>Nome</th>
                    <th>Descricao</th>
                </tr>
            </thead>
            <tbody>
                @foreach(var categorias in ViewBag.Categorias)
                {
                    <tr>
                        <td>@categorias.Id</td>
                        <td>@categorias.Nome</td>
                        <td>@categorias.Descricao</td>
                    </tr>
                }
            </tbody>
        </table>
    </div>
</body>
</html>

========================

Codigo Form categoria

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Form</title>
</head>
<body>
    <div> 
        <form action="/Categoria/Adiciona" method="post">
            <label for="nome">Nome:</label>
            <input name="categorias.Nome" id="nome"/>

            <label for="descricao">Descricao:</label>
            <input name="categorias.Descricao" id="descricao"/>

            <input type="submit" value="Cadastrar"/>

        </form>
    </div>
</body>
</html>
2 respostas

Olá Ricardo

O nome do campo do formulário precisa ser igual ao argumento do método Adiciona do Controller.

O código do Form.cshtml deveria ficar da seguinte forma:

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Form</title>
</head>
<body>
    <div> 
        <form action="/Categoria/Adiciona" method="post">
            <label for="nome">Nome:</label>
            <input name="categoria.Nome" id="nome"/>
            <label for="descricao">Descricao:</label>
            <input name="categoria.Descricao" id="descricao"/>
            <input type="submit" value="Cadastrar"/>
        </form>
    </div>
</body>
</html>
solução!

Ok intendi, agora funcionou valeu.