2009-09-08 5 views

Répondre

208

Avez-vous essayé cette ?:

return RedirectToAction("action", "controller", new { area = "area" }); 
+3

Je ne vois pas ce travail lorsque je vais d'une zone à l'application principale. Zone = "" ?? – MvcCmsJon

+23

@MvcCMsJon 'return RedirectToAction (" action "," controller ", new {area =" "});' devrait le faire. – kim3er

+0

ya que je me suis dit que finalement, mais jamais posté, lol – MvcCmsJon

32

Votre réponse m'a été utile pour moi. Je voulais juste ajouter ci-dessous:

Si vous souhaitez rediriger d'une zone à une autre zone, le code ci-dessus fonctionne bien. Et, si vous voulez rediriger d'une zone vers un contrôleur/vue qui n'est pas présent dans le dossier de zone (c'est-à-dire dans la plupart des cas, votre frontal), vous pouvez spécifier area = "".

à savoir

return RedirectToAction("action", "controller", new { area = "" }); 
+3

Exactement ce que je cherchais, Merci pour cette réponse. – Jessycormier

14

Je voudrais demander un suivi ici. Comprendre que

return RedirectToAction("action", "area1/controller") 

est également représentée par

return RedirectToAction("action", "controller", new { area = "area1" }); 

Comment un exercice vers le bas dans imbrications plus de zone en utilisant la même notation? Le grand avantage d'avoir la notation appropriée est que, avec reSharper en particulier, le refactoring est géré de manière appropriée si vous avez besoin de revenir en arrière et de renommer l'un des contrôleurs. Une fois que j'ajoute une zone supplémentaire au mélange et que je les ai imbriquées les unes dans les autres, la notation précédente n'est pas équivalente.

return RedirectToAction("action", "area1/area2/controller"); 

Je garderai la question à jour si je la trouve en premier.


Ok, donc je crois que la réponse est rien de spectaculaire, mais la meilleure façon de le faire de sorte que vous obtenez toujours une sorte de coloration valide w/ReSharper & IntelliSense est la suivante:

return RedirectToAction("action","controller", new { area = "area1/area2" }); 

Au moins ici, vous aurez la possibilité de F12 ou Ctrl + Cliquez sur le contrôleur et être dirigé vers lui et si vous avez besoin de faire un changement de nom Resharper le trouvera ... mais il ne fera aucun changement à la zones définies ... alors choisissez vos batailles.

Dans la plupart des cas, je peux éviter d'utiliser des redirections entières ... mais parfois vous devez faire ce que vous devez faire.

Questions connexes