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

Estou com dúvida no curso de ASP.NET MVC: Desenvolvendo para Web, no exercício do capítulo Trabalhando melhor com as Views.

Tive um erro, o que aconteceu? Ajude-me por favor, sou iniciante! Obrigado.

The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Visualiza(Int32)' in 'CaelumEstoque.Controllers.ProdutoController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Nome do parâmetro: parameters

ProdutoController está assim;

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

A view Visualiza assim;

Id: @Model.Id <br />
Nome: @Model.Nome <br />
Categoria: @Model.Categoria.Nome <br />
Preço: @Model.Preco <br />
Descrição: @Model.Descricao <br />
Quantidade: @Model.Quantidade <br />

@Html.ActionLink("Voltar para lista de produtos", "Index", "Produto")

Index.cshtml assim;

<table>
    <thead>
        <tr>
            <th>Id</th>
            <th>Nome do Produto</th>
            <th>Preço</th>
        </tr>
    </thead>
    <tbody>
        @foreach (CaelumEstoque.Models.Produto produto in Model)
        {
            <tr>
                <td>@produto.Id</td>
                <td>@Html.ActionLink(produto.Nome, "Visualiza", new {id = produto.Id })</td>
                <td>@produto.Preco</td>
            </tr>
        }
    </tbody>
</table>
1 resposta
solução!

Elias, A action "Visualiza" do ProdutoController deve receber um Id como parâmetro para que ela possa efetuar a busca pelo produto em questão e em seguida renderizar a View com as informações deste produto. A rota ficaria algo assim: "Produto/Visualiza/1", onde Produto é o Controller, "Visualiza" é a Action e o "1" um possível Id de produto em seu banco.