O objetivo é enviar o produto previamente informado por meio de ViewBag (Em caso de itens que não passaram na validação), contudo, quando recebo a requisição não tem informação de "campo obrigatório" e o produto também não "aparece" no formulário.
Segue código:
Controller:
public ActionResult Form()
{
CategoriasDAO produtoDao = new CategoriasDAO();
IList<CategoriaDoProduto> categorias = produtoDao.Lista();
ViewBag.Produto = new Produto();
ViewBag.vbcategorias = categorias;
return View();
}
[HttpPost]
public ActionResult Adiciona(Produto produto)
{
if (produto.CategoriaId == 1 && produto.Preco < 100)
{
ModelState.AddModelError("produto.Invalido", "Informática com preço abaixo de 100 reais");
}
if (ModelState.IsValid)
{
ProdutosDAO produtoDao = new ProdutosDAO();
produtoDao.Adiciona(produto);
return RedirectToAction("Index");
}
else
{
CategoriasDAO categoriasDao = new CategoriasDAO();
ViewBag.Produto = produto;
ViewBag.Categorias = categoriasDao.Lista();
return RedirectToAction("Form");
}
}
View:
<form action="/Produto/Adiciona" method="post">
@Html.ValidationMessage("produto.Invalido")
<label for="nome">Nome:</label>
<input id="nome" name="produto.Nome" value="@ViewBag.Produto.Nome" />
@Html.ValidationMessage("produto.Nome") </form>
Model:
public class Produto() {
[Required, StringLength(20)]
public String Nome { get; set; }
}
Agradeço desde já.