2010-01-09 48 views

回答

3

它是可能的(这通常通过基于在global.asax中定义的.NET MVC框架来产生),检查Haacked routing debugger

+0

我想我最好问 - 你为什么想知道?根据控制器/动作/路线值的名称作出决定会让你的代码松散耦合。 – belugabob 2010-01-09 21:57:18

6

在哪里,当你想要得到的值?

从你的代码中,你可以拨打:

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"); 
} 

请注意,从应用程序的代码中这仅适用。肯定是有没有办法让有关其他网站和应用程序的信息。

0

您可以通过添加的Application_BeginRequest方法您Global.asaxcs文件中获得当前控制器的名称和动作名称。

下面是一个例子:

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); 
     } 
    } 
相关问题