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

Dúvida no Ex. 8 da Aula 5 - Validando um produto com Model Validation

Olá fiz exatamente como orientou no video porém quando acesso a view Form no browser é retornado a seguinte mensagem de erro:

Additional information: Não é possível fazer associação em tempo de execução em uma referência nula

Já tentei de tudo porem o erro persiste, nao sei o que pode ser.

Código da view:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Form</title>
</head>
<body>
    <div>
        <form action="/Produto/Adiciona" method="post">
            <label for="nome">Nome:</label>
            <input id="nome" name="produto.Nome" value="@ViewBag.Produto.Nome" />
            @Html.ValidationMessage("produto.Nome")

            <label for="quantidade">Quantidade:</label>
            <input id="quantidade" name="produto.Quantidade" value="@ViewBag.Produto.Quantidade" />
            @Html.ValidationMessage("produto.Quantidade")

            <label for="descricao">Descrição:</label>
            <input id="descricao" name="produto.Descricao" value="@ViewBag.Produto.Descricao" />
            @Html.ValidationMessage("produto.Descricao")

            <label for="preco">Preço:</label>
            <input id="preco" name="produto.Preco" value="@ViewBag.Produto.Preco" />
            @Html.ValidationMessage("produto.Preco")

            <label for="categoria">Categoria:</label>
            <select id="categoria" name="produto.CategoriaId">
                @foreach (var categorias in ViewBag.Categorias)
                {


                    <option value="@categorias.Id" selected="@categorias.Id.Equals(ViewBag.Produto.CtegoriaId)">@categorias.Nome</option>
                }
            </select>
            @Html.ValidationMessage("produto.CategoriaId")
            <input type="submit" value="Cadastrar" />
        </form>
    </div>
</body>
</html>
3 respostas
solução!

Opa Arthur, tudo bem cara?

Como você está usando a Viewbag para preencher os campos do formulário, quando você entra nele não existe nada dentro de Viewbag.Produto, por isso dá esse problema.

Você tem que preencher a Viewbag com um produto vazio para não dar esse problema. Então, na action Form:

public ActionResult Form()
{
    Viewbag.Produto = new Produto();
    return View();
}

Faça isso e veja se funciona :)

Valeuuu era isso, muito obrigado :)

Olá tive o mesmo problema acima, coloquei o new Produto no metodo do Form.

da o seguinte erro: 'CaelumEstoque.Models.Produto' não contém uma definição para 'preco' (Não coloquei validação alguma no produto)