Dans un contrôleur, est-il possible de renvoyer la vue d'une action depuis UN AUTRE contrôleur? L'autre option consiste à retourner une vue partielle, qui utilise Html.Action (...) pour renvoyer la vue de l'autre contrôleur, mais je me demandais s'il y avait quelque chose de plus propre. Merci.MVC2 - Possibilité d'invoquer l'action d'un contrôleur DIFFERENT?
Répondre
Je fini par utiliser ma solution originale, qui avait une vision commune qui invoque une action. C'était beaucoup moins de code que nécessaire. Merci.
Oui, si cette vue est une vue partagée. Placez la vue dans le dossier Views/Shared
dans votre projet MVC, puis les deux contrôleurs seront en mesure de le retourner.
bien que cela soit vrai, si vous voulez charger une vue qui est techniquement désignée par un autre contrôleur, la réponse de @ Marnix est correcte. –
Si vous souhaitez réutiliser uniquement la vue, vous pouvez passer le chemin d'accès à la vue. Par exemple:
public ActionResult MyAction()
{
// do your model magic here
return View("~/Views/OtherController/View.aspx", model);
}
Ou vous pouvez déplacer la vue de Views/Shared
comme Kyle a déjà suggéré.
Voici une stratégie que je l'utilise pour appeler une autre action sans avoir à créer une vue spéciale pour cette fin:
Créer une vision commune qui prend un modèle qui définit une action, le contrôleur et RouteValues, et dont la seule La responsabilité est d'appeler RenderAction avec les valeurs de ce modèle.
Ensuite, créez une méthode d'assistance sur votre classe de contrôleur de base qui prend comme paramètres un Action, un Controller et un RouteValues, et renvoie le ViewResult pour cette vue partagée. De cette façon, vous pouvez réutiliser cette méthode d'assistance et cette vue partagée sur tous vos contrôleurs chaque fois que vous voulez rendre une autre action à partir du contexte d'une autre action.
Bien sûr, si c'est juste la vue et non l'action que vous voulez invoquer, la réponse de Marnix est correcte.
-1 n'aide personne si elles ne sont pas expliquées, les gars. – StriplingWarrior
Cela ressemble à une façon maladroite de faire les choses. Utiliser une vue pour influencer les contrôleurs fonctionne comme si vous aviez piraté le modèle MVC. –
@Simon Halsey: Je suppose qu'on pourrait soutenir que toute l'idée de 'RenderAction' pirate le modèle MVC. Néanmoins, cela aide à éviter beaucoup de code en double. L'utilisation de la méthode 'RenderAction' pour permettre à un contrôleur d'appeler une action enfant sur un autre contrôleur peut également faciliter la réutilisation du code. J'apprécie les commentaires, cependant. Si vous trouvez un moyen moins maladroit, j'espère que vous le partagerez avec nous. – StriplingWarrior
Si vous souhaitez appeler une action sur un autre contrôleur, vous pouvez utiliser Controller.RedirectToAction() et transmettre le nom de l'action et du contrôleur. Toutefois, cela ajoute un aller-retour supplémentaire du serveur. Si vous voulez éviter cela, vous pouvez utiliser la classe TransferResult montré ici:
- 1. Testez mon contrôleur MVC2
- 2. Contrôleur de compte mvc2
- 3. Get different Source Code
- 4. objet d'affichage au contrôleur MVC2 de silverlight
- 5. ASP.NET MVC2 Modèle/Vue/code contrôleur
- 6. Contrôleur parent ASP.NET MVC2 non redirigé
- 7. Contrôleur ASP.Net MVC2 Chemin introuvable IIS7
- 8. Different packageNameSuffix avec vue personnalisée
- 9. onListItemClick() show different-2 activités
- 10. Servlet: different PrintWriter.print() et PrintWriter.println()
- 11. ASP.NET MVC2: Comment retourner un fichier depuis un contrôleur?
- 12. Envoyer des données JSON génériques au contrôleur MVC2
- 13. Création d'une liste d'objets personnalisés dans le contrôleur MVC2
- 14. Passage de données du contrôleur au contrôle utilisateur MVC2
- 15. ASP.NET MVC2 refuser l'accès au contrôleur avec IIS 7?
- 16. .net mvc2 - modifier l'emplacement de la vue du contrôleur
- 17. ASP.NET MVC2 Lecture de données JSON avec le contrôleur
- 18. Le contrôleur ASP.NET MVC2 ne reconnaît pas le ticket d'authentification
- 19. ASP.NET MVC2 - passer un paramètre à un contrôleur
- 20. MVC2 trouver zone/contrôleur/action depuis l'attribut personnalisé
- 21. ASP.NET MVC2 rendu une vue partielle avec son propre contrôleur
- 22. asp.net mvc2 - deux vues (ou plus) utilisant le même contrôleur?
- 23. .net MVC2 jQuery ne peut invoquer l'action du contrôleur
- 24. MySQL - Different instruction UPDATE autre INSERT
- 25. Camel: Demander une réponse Different Endpoint
- 26. Paramétrer un cookie dans iframe - different Domain
- 27. Oracle "Equal" plus rapide que "Different"
- 28. MVC3- ASP.NET journalisée dans les méthodes individuelles Different
- 29. Comment configurer un contrôleur par défaut ou masquer le nom du contrôleur en utilisant asp.net MVC2
- 30. Escaping JSON dans MVC2
Le titre et le corps de votre question ne sont pas d'accord. Demandez-vous d'invoquer l'action * de l'autre contrôleur ou simplement une * vue * construite pour un autre contrôleur? – StriplingWarrior