Message de validation ne montrant pas après Redirect (utilisant l'attribut ModelStateToTempData)

StackOverflow https://stackoverflow.com/questions/1127922

  •  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>  
Était-ce utile?

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");
 }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top