Eu fiz tudo corretamente, igual feito na explicação, mas não mostra as mensagens de erro, segue abaixo os códigos da aplicação:
public class Produto
{
public int Id { get; set; }
[StringLength(20)]
public String Nome { get; set; }
public float Preco { get; set; }
public CategoriaDoProduto Categoria { get; set; }
public int? CategoriaId { get; set; }
public String Descricao { get; set; }
public int Quantidade { get; set; }
}
--------------------------------------------------------------
//ProdutoController
[HttpPost]
public ActionResult Adiciona(Produto produto)
{
if (ModelState.IsValid)
{
this.produtosDAO.Adiciona(produto);
return RedirectToAction("Index", "Produto");
}
else
{
CategoriasDAO categoriasDAO = new CategoriasDAO();
IList<CategoriaDoProduto> categorias = categoriasDAO.Lista();
ViewBag.Categorias = categorias;
return RedirectToAction("Form", "Produto");
}
}
-----------------------------------------------------------------
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Form</title>
</head>
<body>
<form action="/Produto/Adiciona" method="post">
<label for="nome">Nome:</label>
<input id="nome" name="produto.Nome" />
@Html.ValidationMessage("produto.Nome")
<br /><br />
<label for="preco">Preço:</label>
<input id="preco" name="produto.Preco" />
@Html.ValidationMessage("produto.Preco")
<br /><br />
<label for="descricao">Descrição:</label>
<input id="descricao" name="produto.Descricao" />
@Html.ValidationMessage("produto.Descricao")
<br /><br />
<label for="quantidade">Quantidade:</label>
<input id="quantidade" name="produto.Quantidade" />
@Html.ValidationMessage("produto.Quantidade")
<br /><br />
<label for="categoria">Categoria:</label>
<select id="categoria" name="produto.CategoriaId">
@foreach(var categoria in ViewBag.Categorias)
{
<option value="@categoria.Id">@categoria.Nome</option>
}
</select>
@Html.ValidationMessage("produto.CategoriaId")
<br /><br />
<input type="submit" value="Cadastrar" />
</form>
</body>
</html>