2010-12-30 6 views
5

Est-il possible d'accéder à ViewContext à partir de la bibliothèque de classes? J'ai besoin de connaître les noms des actions actuelles de View et de Controller. J'ai ajouté à la fois System.Web.dll et System.Web.Mvc dans mon projet de bibliothèque de classes, mais toujours incapable de trouver un moyen d'obtenir ce dont j'ai besoin. Bien que je puisse accéder au contexte actuel en utilisant System.Web.HttpContext.Current.Accès à ViewContext à partir de la bibliothèque de classes

+1

Vous vous demandez comment faire cela dans un contexte statique? Qu'essayez-vous exactement d'accomplir? Cela semble être un mauvais design. – TheCloudlessSky

+0

En fait, j'utilise des événements nhibernate pour le suivi automatique de l'audit et pour cela, par exemple, qui a changé quoi et quand j'ai aussi besoin de détails sur le point de vue ou l'enregistrement de formulaire créé ou modifié. Ainsi, dans la piste de vérification, il y aura quelque chose comme View | Action | UserName | DateChanged. Et oui ce code nhibernate est placé à l'intérieur d'un dll sépharade – Waqas

Répondre

9

Vous pouvez accéder aux informations d'itinéraire en cours comme celui-ci:

var httpContext = new HttpContextWrapper(HttpContext.Current); 
var routeData = System.Web.Routing.RouteTable.Routes.GetRouteData(httpContext); 

var controllerName = routeData.Values["controller"].ToString(); 
var actionName = routeData.Values["action"].ToString(); 
+2

Pour quelqu'un comme moi arrivant à cette réponse, vous pouvez maintenant accéder aux routedata directement à partir du contexte: 'HttpContext.Current.Request.RequestContext.RouteData.Values ​​[" controller "]' semble être plus précis que de faire avec la méthode ci-dessus – Pete

+0

'HttpContext.Current.Request.RequestContext.RouteData.Values ​​[" controller "]' approche ne fonctionne pas en classe statique. – Muflix

Questions connexes