2013-08-30 32 views
46

Có thể tìm ra bộ điều khiển/tác vụ hiện đang thực hiện trong OnActionExecuting không?Làm thế nào để có được tên điều khiển và hành động trong OnActionExecuting?

+5

Nếu bất kỳ câu trả lời nào trong số này giải quyết được vấn đề của bạn, bạn nên xem xét việc thực hiện một câu trả lời. – PickYourPoison

+2

@loyalflow hãy để tôi trở thành Navi ở đây bằng cách nói "Hey! Nghe! Đánh dấu câu trả lời" – Dbl

Trả lời

26

Bạn có thể sử dụng ActionDescriptor của 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 - nó có chính xác hơn câu trả lời được đánh giá cao nhất ở trên không? Không phải là đối kháng, trung thực muốn biết bởi vì không ai được đánh dấu là chính xác. –

71

Bạn có thể thử các ActionDescriptor của ActionExecutingContext như sau:

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

Bạn có thể nhìn vào RouteData:

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

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

ActionExecutingContext bối cảnh này sẽ là bối cảnh của bạn ....

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

Các vấn đề liên quan