Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Aula 6 - @foreach(var produto in Model)

No final do vídeo, é explicado como utilizar o @foreach(var produto in Model) para que não ocorra o erro no ActionLink do nome do produto. Porém estou tendo os seguintes erros na Index.cshtml:

CS0118: 'CaelumEstoque.Models' is a namespace but is used like a type (linha 1);
CS0428: Cannot convert method group 'Id' to non-delegate type 'object'. Did you intend to invoke the method? (linha 26)
CS0828: Cannot assign method group to anonymous type property (linha 28)

ProdutoController:

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
        public ActionResult Index() {
            ProdutosDAO dao = new ProdutosDAO();
            IList<Produto> produtos = dao.Lista();
            return View();
        }

        public ActionResult Form() {
            CategoriasDAO categoriasDAO = new CategoriasDAO();
            IList<CategoriaDoProduto> categorias = categoriasDAO.Lista();
            ViewBag.Categorias = categorias;
            ViewBag.Produto = new Produto();
            return View();
        }

        [HttpPost]
        public ActionResult Adiciona(Produto produto) {
            int idDaInformatica = 1;

            if(produto.CategoriaId.Equals(idDaInformatica) && produto.Preco < 100) {
                ModelState.AddModelError("produto.Invalido", "Informática com preço abaixo de 100 reais.");
            }

            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");
            }

        }

        public ActionResult Visualiza(int id) {
            ProdutosDAO dao = new ProdutosDAO();
            Produto produto = dao.BuscaPorId(id);
            ViewBag.Produto = produto;
            return View();
        }

    }
}

Index.cshtml:

@model IList<CaelumEstoque.Models.Produto>
@{
    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>Quantidade</th>
                </tr>
            </thead>
            <tbody>
                @foreach(var produto in Model){
                    <tr>
                        <td>@produto.Id</td>
                        <td>
                            @Html.ActionLink(produto.Nome, "Visualiza", new { id = produto.Id });
                        </td>
                        <td>@produto.Quantidade</td>
                    </tr>
                }
            </tbody>
        </table>
    </div>
</body>
</html>
1 resposta
solução!

O Visual Studio estava apontando os erros, mas ainda era possível compilar o código. Então reiniciei o Visual Studio e parou de apontar os erros.