2013-08-30 8 views

risposta

26

È possibile utilizzare ActionDescriptor di ActionExecutingContext

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    var descriptor = filterContext.ActionDescriptor; 
    var actionName = descriptor.ActionName; 
    var controllerName = descriptor.ControllerDescriptor.ControllerName; 
    ...... 
    base.OnActionExecuting(filterContext); 
} 
+1

@ VSG24 - è più corretto della risposta più pubblicizzata sopra? Non essere antagonistico, onestamente voglio sapere perché nessuno è contrassegnato come corretto. –

71

Si potrebbe provare il ActionDescriptor del ActionExecutingContext come segue:

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    string actionName = filterContext.ActionDescriptor.ActionName; 
    string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName 
    ..... 
    base.OnActionExecuting(filterContext); 
} 
10

Si potrebbe guardare il RouteData:

Request.RequestContext.RouteData.Values["Controller"]; 
    Request.RequestContext.RouteData.Values["Action"]; 
1
var controllerName = (string)routingValues["controller"]; 

var actionName = (string)routingValues["action"]; 
-1

contesto ActionExecutingContext questo sta per essere il vostro contesto ....

var ActionName = ((Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor) context.ActionDescriptor) .ActionName; var controllerName = ((Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor) context.ActionDescriptor) .ControllerName;

Problemi correlati