Pessoal, estou com um problema na validação do meu formulario nome, coloquei as anotações tudo direitinho, mas quando eu tento adicionar ao meu campo nome um nome com + de 20 caracteres o sistema gera uma exceção e para o programa, e gera o seguinte erro: "An exception of type 'System.NullReferenceException' occurred in App_Web_ruxct1da.dll but was not handled in user code
Additional information: Referência de objeto não definida para uma instância de um objeto."
e ele acusa erro no for each da minha view form.
Seguem abaixo os códigos da minha aplicação.
View:
<!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" />
@Html.ValidationMessage("produto.Nome")
<label for="preco">Preço:</label>
<input id="preco" name="produto.Preco" />
<label for="quantidade">Quantidade:</label>
<input id="quantidade" name="produto.Quantidade" />
<label for="descricao">Descrição:</label>
<input id="descricao" name="produto.Descricao" />
<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>
<input type="submit" />
</form>
</div>
</body>
</html>
Model do produto:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace CaelumEstoque.Models
{
public class Produto
{
public int Id { get; set; }
[StringLengthAttribute(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; }
}
}
Controller do produto:
using CaelumEstoque.DAO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CaelumEstoque.Models;
namespace CaelumEstoque.Controllers
{
public class ProdutoController : Controller
{
// GET: Produto
public ActionResult Index()
{
ProdutosDAO dao = new ProdutosDAO();
IList<Produto> produtos = dao.Lista();
ViewBag.Produtos = produtos;
return View();
}
public ActionResult Form()
{
var categoriasDao = new CategoriasDAO();
IList<CategoriaDoProduto> categoria = categoriasDao.Lista();
ViewBag.Categorias = categoria;
return View();
}
[HttpPost]
public ActionResult Adiciona(Produto produto)
{
if (ModelState.IsValid)
{
ProdutosDAO dao = new ProdutosDAO();
dao.Adiciona(produto);
return RedirectToAction("Index", "Produto");
}
else
{
return View("Form");
}
}
}
}
Agradeço se alguém puder dar uma luz, valeu!