1
resposta

Validação ao incluir um novo usuário

Boa noite.

Quando entro na View para incluir um novo usuário, as mensagens de validação dos campos Nome e Email já aparecem (field is required), antes mesmo de efetuar qualquer tentativa de incluir um novo usuário. A validação não deveria ocorrer somente quando tento incluir um novo usuário?

Segue abaixo as classes:

using Financas.DAO;
using Financas.Entidades;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Financas.Controllers
{
    public class UsuarioController : Controller
    {
        private UsuarioDAO usuarioDAO;
        public UsuarioController(UsuarioDAO usuarioDAO)
        {
            this.usuarioDAO = usuarioDAO;
        }

        public ActionResult Form()
        {
            return View();
        }

        public ActionResult Adiciona(Usuario usuario)
        {
            if (ModelState.IsValid)
            {
                usuarioDAO.Adiciona(usuario);
                return RedirectToAction("Index");
            }
            else 
            {
                return View("Form", usuario);    
            }
        }

        public ActionResult Index()
        {
            IList<Usuario> usuarios = usuarioDAO.Lista();
            return View(usuarios);
        }
    }
}
@model  Financas.Entidades.Usuario

@using (Html.BeginForm("Adiciona", "Usuario", FormMethod.Post))
{ 
    @Html.LabelFor(u => u.Nome, "Nome:")
    @Html.TextBoxFor(u => u.Nome, new { @class = "form-control" })
    @Html.ValidationMessageFor(u => u.Nome)

    @Html.LabelFor(u => u.Email, "E-mail:")
    @Html.TextBoxFor(u => u.Email, new { @class = "form-control" })
    @Html.ValidationMessageFor(u => u.Email)

    <input type="submit" value="Enviar"/>
}
1 resposta

Oi Bruno, tudo bem?

O formulário faz um post para a action Adiciona, mas esta não está marcada como "POST".

Adicione este atributo [HttpPost] ao método Adiciona():

[HttpPost]
public ActionResult Adiciona(Usuario usuario)

Veja se funciona. Qualquer coisa, nos avise!