Wie erhalte ich den Controller- und Aktionsnamen in OnActionExecuting?


80

Ist es möglich, den aktuell ausgeführten Controller / die aktuell ausgeführte Aktion in OnActionExecuting herauszufinden?


9
Wenn eine dieser Antworten Ihr Problem gelöst hat, sollten Sie in Betracht ziehen, eine als akzeptiert zu betrachten.
PickYourPoison

2
@loyalflow lass mich hier Navi sein, indem ich sage "Hey! Hör zu!
Markiere

Antworten:


107

Sie könnten die versuchen , ActionDescriptorvon dem ActionExecutingContextwie folgt:

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

38

Sie können ActionDescriptorvon verwendenActionExecutingContext

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

Mein schlechtes, dieses ist nicht für Net-Core.
Derrick

21

Sie könnten sich Folgendes ansehen RouteData:

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

12

ActionExecutingContext-Kontext Dies wird Ihr Kontext sein ....

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

1
Diese Antwort ist für .Net-Core
Derrick

9

Verwenden Sie für ASP.NET Core Folgendes:

var controllerName = ((ControllerBase)filterContext.Controller)
   .ControllerContext.ActionDescriptor.ControllerName;
var actionName = ((ControllerBase)filterContext.Controller)
   .ControllerContext.ActionDescriptor.ActionName;

Diese Antwort ist für .Net-Core
Derrick

1
var controllerName = (string)routingValues["controller"];

var actionName = (string)routingValues["action"];
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.