2013-08-30 24 views
46

Şu anda yürütülen denetleyici/eylemi OnActionExecuting içinde tespit etmek mümkün mü?OnActionExecuting'ta denetleyici ve eylem adı nasıl alınır?

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

Eğer bu cevaplardan herhangi biri probleminizi çözdüyse, kabul edildiğini düşünmelisiniz. – PickYourPoison

+2

@loyalflow Burada "Hey! Dinle! Lütfen bir cevap yazınız" diyerek Navi'ye gideyim. – Dbl

cevap

26

Sen aşağıdaki gibi ActionExecutingContext ait ActionDescriptor deneyebilirsiniz 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 - Yukarıdaki en yüksek cevaptan daha doğru mu? Antagonist olmamak, dürüstçe bilmek isteriz çünkü hiçbiri doğru olarak işaretlenmez. –

71

ait ActionDescriptor kullanabilirsiniz

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

Sen RouteData bakabilir:

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

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

ActionExecutingContext bağlam Bu bağlamda olacak ....

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

İlgili konular