web-dev-qa-db-fra.com

Comment obtenir le nom du contrôleur et de l'action dans OnActionExecuting?

Est-il possible de déterminer le contrôleur/l'action en cours d'exécution dans OnActionExecuting?

65
loyalflow

Vous pouvez essayer le ActionDescriptor du ActionExecutingContext comme suit:

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

Vous pouvez utiliser ActionDescriptor de ActionExecutingContext

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

Vous pouvez regarder le RouteData:

    Request.RequestContext.RouteData.Values["Controller"];
    Request.RequestContext.RouteData.Values["Action"];
13
Oliver

contexte ActionExecutingContext cela va être votre contexte ....

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

Pour ASP.NET Core, utilisez ce qui suit,

var controllerName = ((ControllerBase)filterContext.Controller)
   .ControllerContext.ActionDescriptor.ControllerName;
var actionName = ((ControllerBase)filterContext.Controller)
   .ControllerContext.ActionDescriptor.ActionName;
2
Circuit Breaker
var controllerName = (string)routingValues["controller"];

var actionName = (string)routingValues["action"];
2
Rohan Rewale