Usuário com melhor resposta
Passar a mensagem de erro para um ViewBag

Pergunta
-
Boa tarde,
Tenho um model "TesteGratuitoViewModel" que contém todas as regras de negócios.
Eu sei como identificar de qual campo vem o erro como no exemplo: if (!ModelState.IsValidField("Usuarios_Email"))
Gostaria de saber como eu passo a descrição do erro de um determinado campo para a ViewBag.MensagemDeErro
Segue abaixo parte do código da minha aplicação.
PS: Eu não quero utilizar "@Html.ValidationMessageFor" na view
TesteGratuitoViewModel:
[Required(ErrorMessage = "Informe o email")]
[RegularExpression(".+\\@.+\\..+", ErrorMessage = "Informe um email válido...")]
[Display(Name = "Email")]
public string Usuarios_Email { get; set; }
HomeController:
[HttpPost]
public ActionResult TesteGratuitoSegundaPagina(TesteGratuitoViewModel testeGratuitoViewModel, string parametroOpcional = "")
{
if (!ModelState.IsValidField("Usuarios_Email"))
{
ViewBag.MensagemDeErro = ModelState["Usuarios_NomeUsuario"].Value; <<== Só um exemplo de como poderia ser
return View(testeGratuitoViewModel);
}
return RedirectToAction("TesteGratuitoTerceiraPagina", testeGratuitoViewModel);
}- Editado N.SOLUTION terça-feira, 30 de julho de 2019 21:16
Respostas
-
Boa noite,
Depois de muito pesquisar descobri a solução ...
Segue abaixo
// Analisa regras de negócios
if (!ModelState.IsValid)
{
foreach (var modelErro in ViewData.ModelState["Usuarios_NomeUsuario"].Errors)
{
ViewBag.ExibirMensagem = "Sim";
ViewBag.Mensagem = modelErro.ErrorMessage;
return View(testeGratuitoViewModel);
}
foreach (var modelErro in ViewData.ModelState["Usuarios_Telefone"].Errors)
{
ViewBag.ExibirMensagem = "Sim";
ViewBag.Mensagem = modelErro.ErrorMessage;
return View(testeGratuitoViewModel);
}
}- Marcado como Resposta N.SOLUTION quarta-feira, 31 de julho de 2019 00:58
Todas as Respostas
-
Como vc esta usando uma validação na model, vc não vai utilizar uma Viewbag, vc vai usar um
"Html.ValidationMessageFor".
Exemplo:@Html.ValidationMessageFor(model => model.CEP, "", new { @class = "text-danger" })
Paulo Marcelo Dalbosco
- Editado Paulo M Dalbosco terça-feira, 30 de julho de 2019 20:05
-
-
Boa noite,
Depois de muito pesquisar descobri a solução ...
Segue abaixo
// Analisa regras de negócios
if (!ModelState.IsValid)
{
foreach (var modelErro in ViewData.ModelState["Usuarios_NomeUsuario"].Errors)
{
ViewBag.ExibirMensagem = "Sim";
ViewBag.Mensagem = modelErro.ErrorMessage;
return View(testeGratuitoViewModel);
}
foreach (var modelErro in ViewData.ModelState["Usuarios_Telefone"].Errors)
{
ViewBag.ExibirMensagem = "Sim";
ViewBag.Mensagem = modelErro.ErrorMessage;
return View(testeGratuitoViewModel);
}
}- Marcado como Resposta N.SOLUTION quarta-feira, 31 de julho de 2019 00:58