2010-01-09 7 views

Répondre

3

Il est possible de vérifier Haacked routing debugger.

+0

Je suppose que je ferais mieux de demander - pourquoi ne voulez-vous savoir? prendre une décision basée sur les noms des contrôleurs/actions/routes-valeurs va vous rendre le code moins lâchement couplé. – belugabob

6

Où et quand voulez-vous obtenir les valeurs?

À partir de votre code, vous pouvez appeler:

HttpContextBase context = new HttpContextWrapper(HttpContext.Current); 
RouteData rd = RouteTable.Routes.GetRouteData(context); 

if (rd != null) { 
    string controllerName = rd.GetRequiredString("controller"); 
    string actionName = rd.GetRequiredString("action"); 
} 

S'il vous plaît noter que cela ne fonctionne que dans le code de votre application. Il n'y a certainement aucun moyen d'obtenir cette information sur les autres sites et les applications.

0

Vous pouvez obtenir le nom du contrôleur et le nom de l'action en ajoutant la méthode Application_BeginRequest dans votre fichier Global.asaxcs.

Voici un exemple:

protected void Application_BeginRequest(object sender, EventArgs args) 
    { 
     HttpContextBase currentContext = new HttpContextWrapper(HttpContext.Current); 

     UrlHelper urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext); 
     RouteData routeData = urlHelper.RouteCollection.GetRouteData(currentContext); 

     string url = currentContext.Request.Url.AbsoluteUri; 
     string httpMethod = currentContext.Request.HttpMethod; 
     string action = routeData.Values["action"] as string; 
     string controller = routeData.Values["controller"] as string; 

     if (!string.IsNullOrEmpty(controller) && !string.IsNullOrEmpty(action)) 
     { 
      Logger.Log(controller, action, url, httpMethod); 
     } 
    }