17 votes

Comment effectuer une redirection dans une fonction ViewResult ou ActionResult ?

Dis que je l'ai fait :

public ViewResult List() 
{
    IEnumerable<IModel> myList = repository.GetMyList();
    if(1 == myList.Count())
    {
        RedirectToAction("Edit", new { id = myList.Single().id });
    }

    return View(myList);
}

À l'intérieur de cette fonction, je vérifie s'il n'y a qu'un seul élément dans la liste, si c'est le cas, je veux rediriger directement vers le contrôleur qui gère l'élément de la liste, sinon je veux afficher la vue de la liste.

Comment faire ? Il suffit d'ajouter un RedirectToAction ne fonctionne pas - l'appel est lancé mais VS ne fait que l'ignorer et essaie de renvoyer la vue en bas de page.

25voto

Jim Counts Points 4735

Vous devez return RedirectToAction au lieu de simplement appeler la méthode RedirectToAction. De plus, votre méthode devra retourner un ActionResult est un type de retour compatible avec les deux ViewResult y RedirectToRouteResult .

public ActionResult List() 
{
    IEnumerable<IModel> myList = repository.GetMyList();
    if(1 == myList.Count())
    {
        return RedirectToAction("Edit", new { id = myList.Single().id });
    }

    return View(myList);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X