Pourquoi Rediriger les Résultats ne sont pas autorisés dans les Actions Enfant dans Asp.net MVC 2
J'ai quelques partielle des actions que j'ai rendu avec le Asp.Net les contrats à Terme RenderAction méthode. Certains de ces effectuer des redirections après les formes ont été traitées.
Maintenant que j'ai mis à Asp.Net MVC 2 RC il me donne une erreur "Enfant actions ne sont pas autorisées à effectuer une redirection actions".
J'ai vérifié le code source et j'ai trouvé la ligne qui lève l'exception. Pour la contourner, je peux faire un personnalisé RedirectResult, Mais avant je ne je veux comprendre pourquoi, le cadre ne permet pas à elle en premier lieu. Il doit y avoir une bonne raison et peut-être que je ne devrais pas le faire.
Tout savoir la raison de cette limitation?
Grâce
Vous devez vous connecter pour publier un commentaire.
La limitation existe parce que MVC a déjà commencé le rendu de la vue du client. L'effet de redirection à partir de ce point n'est pas défini. Il peut fonctionner à la perfection, elle pouvait continuer le rendu de la vue d'origine, sans redirection, il pourrait jeter une autre exception, etc.
Depuis le résultat de l'exécution de cette action n'est pas défini, le cadre bloque. Dans la pratique, RenderAction ne doit jamais être utilisé pour afficher autre chose que d'un point de vue (ou de la vue-comme le contenu) pour des raisons similaires.
Dans votre cas particulier, l'action extérieure devrait rediriger. Si vous êtes juste de finir la redirection à partir de l'intérieur de la vue de toute façon sans montrer quoi que ce soit à l'utilisateur, alors il n'y a pas vraiment de but à passer par la vue, en premier lieu, que l'action extérieure pourrait avoir délégué le travail de manière appropriée sur son propre.
Essayez d'utiliser quelque chose comme ceci dans l'Action Enfant:
Ma solution.
Méthode d'Action:
Vue:
Dans mon cas, la forme en cours de rendu est un "configurer" du panneau sur une extension d'un site web que je suis en train de construire. J'aimerais que l'extension de la manette pour être capable de gérer le traitement du formulaire, puis rediriger retour à la page d'administration liste de tous configurés extensions. Je ne pense pas qu'il soit approprié ou pratique ici pour vous demander de la page parent contrôleur de traiter le formulaire pour l'extension. Que suggéreriez-vous-je faire à la place?
Dans mon cas inhabituel, j'ai eu un AuthorizeAttribute personnalisé attaché à mon contrôleurs qui tentait de le rediriger sur un enfant d'action, qui est (comme mentionné ci-dessus) non autorisé.
Pour résoudre le problème, j'ai supprimé l'autorisation de vérification de la redirection sur tous les enfants des actions:
Parfois cette erreur se produit lorsque vous essayez de rendre une action de base résultat action.
Exemple:
Dans ce cas, il suffit de pointer la vue partielle de soumission du formulaire d'url à l'action qui a été la cible de vos problématiques de redirection et de lui permettre d'effectuer lui-même la redirection de ses OBTENIR la version.