Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Validate acontecendo ao abrir o formulário

Quando eu abro a tela de Cadastro de Cidade, ele já entra fazendo o Validate, então já aparece a mensagem dizendo que o campo Nome da Cidade é obrigatório.

Descobri que isto acontece por causa desse parâmetro que TENTEI usar para salvar o cliente que estava sendo preenchido antes de ir ao cadastro de cidades.

public ActionResult Create(Cliente cliente)
        {
        ViewBag.Cliente = cliente;
            return View(cliente);
        }

Se eu tiro esse parâmetro o Validate não acontece antecipadamente.

Imagino que seja por que Cliente tem Nome e Cidade também tem Nome. E como este cliente possivelmente esteja vazio, ele está fazendo a validação e dizendo que Nome é campo obrigatório.

Como faço então para salvar campos Preenchidos de uma tela, sair dela, de forma que eu possa usar quando voltar a ela? ViewBag????

1 resposta
solução!

Olá, Jaqueline!

Uma maneira de resolver isso é colocar a seguinte linha no CSS, para ocultar a validação da primeira vez:

.validation-summary-valid { display:none; }

Se ocorrer um erro ao postar, a mensagem será exibida. A outra forma é limpar o ModelState com ModelState.Clear();:

        public ActionResult Create()
        {
            ModelState.Clear();
            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "ID,Nome,Estado")] Cidade cidade)
        {
            if (ModelState.IsValid)
            {
                db.Cidades.Add(cidade);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ModelState.Clear();
            return View(cidade);
        }

Boa sorte e bons estudos!