Message de validation ne montrant pas après Redirect (utilisant l'attribut ModelStateToTempData)
-
13-09-2019 - |
Question
J'ai un problème avec les messages de validation ne montrant pas après une redirection, même quand je suis en utilisant ModelStateToTempData . Est-ce que je méconnais quelque chose de fondamental?
[ModelStateToTempData]
public class AccountController : BaseController
{
public ActionResult LogOn(string email, string password, string returnUrl)
{
if (!ValidateLogOn(email, password))
{
return RedirectToAction("Index", "AnotherController");
}
//other stuff
}
private bool ValidateLogOn(string email, string password)
{
if (!_userTask.ValidateUser(email, password))
{
ModelState.AddModelError("message", "The email or password provided is incorrect.");
}
return ModelState.IsValid;
}
}
Voir:
<li>
<label for="email">E-mail</label>
<%= Html.TextBox("email")%>
<%= Html.ValidationMessage("message") %>
</li>
La solution
Êtes-vous décorez avec les deux contrôleurs [ModelStateToTempData]?
James
Autres conseils
Êtes-vous certainement afficher un message de validation dans la vue?
Vous ne devriez pas rediriger vers un autre contrôleur si vous avez une erreur dans le ModelState. Il n'y a pas Goot pour naviguer vers un autre contrôleur s'il y a erreur dans ModelState -. Il est préférable de rediriger le succès, mais pas échouer
Il suffit de vérifier si ModelState contatins des erreurs et retourner la vue que vous avez recived demande.
if (!ValidateLogOn(email, password))
{
return View("Index");
}