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>