Bom dia,
O ModelState.AddModelError não está funcionando na View. Não sei se ele não está adicionando a mensagem de validação na lista dele ou se a parte @Html.ValidationMessage("produto.Invalido") da View não está reconhecendo esse produto.Invalido criado no ProdutoController.
A outra mensagem que vem da validação feita na classe Produto utilizando os validation attributes aparece normalmente.
        [Required, StringLength(20)]
        public string Nome { get; set; }No Form.cshtml uso @Html.ValidationMessage("produto.Nome") e funciona. Só com a mensagem de validação criada com o AddModelError que não.
Tentei algumas soluções, mas realmente não faço ideia do que seja. Se alguém puder ajudar fico grato.
Segue código do Controller e da View:
ProdutoController
        [HttpPost]
        public ActionResult Adiciona(Produto produto)
        {
            int idDaInformatica = 1;
            if (produto.CategoriaId.Equals(idDaInformatica) && produto.Preco < 100)
            {
                ModelState.AddModelError("produto.Invalido", "Informática com preço abaixo de R$100.");
            }
            if (ModelState.IsValid)
            {
                ProdutosDAO dao = new ProdutosDAO();
                dao.Adiciona(produto);
                return RedirectToAction("Index", "Produto");
            }
            else
            {
                CategoriasDAO categoriasDao = new CategoriasDAO();
                ViewBag.Categorias = categoriasDao.Lista();
                return View("Form");
            }
        }Form.cshtml
    <form method="post" action="/Produto/Adiciona">
        @Html.ValidationMessage("produto.Invalido")
        <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="categoriaId">
            @foreach (var categoria in ViewBag.Categorias)
            {
                <option value="@categoria.Id">@categoria.Nome</option>
            }
        </select>
        <input type="submit" value="Cadastrar" />
    </form> 
            