699 votes

RedirectToAction avec paramètre

J’ai une action appeler à partir d’un point d’ancrage thusly, est un `` .

Par la suite, j’ai besoin de rediriger vers cette même Action provenant d’un contrôleur.

Y a-t-il une façon intelligente de faire cela ? Actuellement je suis ranger `` dans tempdata, mais quand vous appuyez sur f5 pour actualiser la page à nouveau après revenir, le tempdata est parti et la page se bloque.

1131voto

Kurt Schindler Points 8106

Vous pouvez passer l’id dans le cadre du paramètre routeValues de la méthode RedirectToAction().

Cela entraînera une redirection de Site/contrôleur/Action/99. Pas besoin de temp ou tout type de données d’affichage.

212voto

Eric Brown - Cal Points 2771

Kurt réponse doit être bon, d'après mes recherches, mais quand j'ai essayé j'ai eu à faire pour l'obtenir pour travailler effectivement pour moi:

return RedirectToAction( "Main", new RouteValueDictionary( 
    new { controller = controllerName, action = "Main", Id = Id } ) );

Si je n'ai pas de spécifier le contrôleur et l'action dans l' RouteValueDictionary il ne fonctionne pas.

Aussi, quand codé comme ceci, le premier paramètre (Action) semble être ignoré. Donc, si vous venez de spécifier le contrôleur dans le Dict, et attendre le premier paramètre pour spécifier l'Action, il ne fonctionne pas non plus.

43voto

Rohit Points 201

Exemple de MVC 4...

Notez que vous n’avez pas toujours passer paramètre nommé ID

Et,

Bien sûr vous pouvez assigner la chaîne aux champs de modèle au lieu d’utiliser ViewBag si c’est votre préférence.

30voto

mateuscb Points 959

Si votre paramètre est un objet complexe, qui se trouvait être mon cas, cela résout le problème. La clé est le constructeur RouteValueDictionary.

Si vous arrive d’avoir des collections, elle le rend un peu tricker, mais cette autre réponse cela couvre très bien.

19voto

aslanpayi Points 89

....

....

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