2009-07-02 6 views
4

Dans un contrôleur, puis-je détecter si je "contrôle" une vue ou une vue partielle?Détecter la vue ou la vue partielle dans le contrôleur

J'ai un contrôleur partagé qui se trouve entre n'importe quel contrôleur et Controller, il y a des choses que je voudrais seulement se produire si c'est une vue plutôt qu'une vue partielle.

Idéalement situé dans protected override ViewResult View(...

+0

Dans quel scénario ne le sauriez-vous pas déjà? – GalacticCowboy

+0

mis à jour avec plus de détails – NikolaiDante

Répondre

7

Vérifier

ControllerContext.IsChildAction

dans votre méthode d'action, ou

filterContext.IsChildAction

dans OnActionExecuted

+0

Très belle fonction. Cela m'évite beaucoup de traitement dans mon code car j'ai un BaseController dont tous mes contrôleurs héritent et dans mon BaseController, je crée dans la fonction Initialize mes menus. Dans ce cas, lorsque ma vue affichait 3 vues partielles, le menu a été construit 3 fois. Je peux maintenant vérifier si IsChildAction est faux pour la construction du menu et c'est tout! Je vous remercie. – Samuel

1

un trajet spécifique pour chacun./home/about et/home/about/partial que les deux sont routés vers la même méthode de contrôleur. Fondamentalement, plutôt que d'essayer de flairer les choses, exprimez-le explicitement, à travers une route, ou un paramètre.

+0

Des pensées sur une approche différente pour une base de code hérité? – NikolaiDante

+0

"héritage" utilisant ASP.NET MVC? Comment votre code est-il déjà hérité? –

+0

parce que c'est énorme et je ne pense pas que quelque chose de rétro qui implique de changer chaque itinéraire dans la solution. – NikolaiDante

Questions connexes