mars
2012
Si vous utilisez les zones (et vous devriez ) il vous est surement arrivé de vouloir faire référence au layout par défaut depuis une vue définie dans votre zone.
Prenons par exemple l’organisation suivante et le cas ou la vue « Index » de la zone « MyArea » fait référence au layout « _Layout » par défaut :
Cela fonctionne très bien tant qu’il n’y a pas d' »Action » de défini dans le layout de base.
Ajoutons une instruction d’inclusion de la vue partielle « _LogOnStatus » comme ceci :
@Html.Action(« LogOnStatus », « Accounts »)
La page d’accueil fonctionne toujours correctement et la vue partielle est bien affichée. Naviguons maintenant vers notre zone et patatra ! Le moteur MVC nous renvoi l’erreur suivante lors de l’accès à une page de votre zone (Par exemple lors de l’accès à l’url /MyArea/Test) :
Le message d’erreur semble parlant mais … il n’est pas correct . Le problème ne vient pas du contrôleur de la vue mais de l’action du layout qui tente de trouver un contrôleur « AccountsController » qui possède une action « LogOnStatus » dans la zone en cours. En effet par défaut lorsqu’un contrôleur est recherché, la zone en cours est prise comme contexte.
Pour remédier à ce problème il suffit d’utiliser, dans le layout de base, la surcharge de Html.Action qui permet de spécifier la zone et de lui passer une nom de zone vide afin de cibler la « zone par défaut » :
Exemple :
@Html.Action(« LogOnStatus », « Accounts », new { area = « » })
C’est tout bête mais encore faut-il le savoir
Archives
- juillet 2012
- mars 2012
- février 2012
- novembre 2011
- octobre 2011
- mars 2011
- novembre 2010
- octobre 2010
- septembre 2010
- août 2010
- avril 2010
- février 2010
- janvier 2010
- novembre 2009
- octobre 2009
- septembre 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juin 2008
- mai 2008
- avril 2008
- février 2008
- mai 2007
- avril 2007
- mars 2007
- février 2007
- janvier 2007