如何在OnActionExecuting中获取控制器和操作名称?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在OnActionExecuting中获取控制器和操作名称?相关的知识,希望对你有一定的参考价值。

是否可以找出OnActionExecuting中当前正在执行的控制器/操作?

答案

您可以尝试ActionDescriptorActionExecutingContext如下:

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

你可以使用ActionDescriptorActionExecutingContext

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

你可以看看RouteData

    Request.RequestContext.RouteData.Values["Controller"];
    Request.RequestContext.RouteData.Values["Action"];
另一答案

ActionExecutingContext上下文这将是你的上下文....

var actionName = ((Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor)context.ActionDescriptor).ActionName;
var controllerName = ((Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor)context.ActionDescriptor).ControllerName;
另一答案
var controllerName = (string)routingValues["controller"];

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

以上是关于如何在OnActionExecuting中获取控制器和操作名称?的主要内容,如果未能解决你的问题,请参考以下文章

OnActionExecuting ValidationAttribute

net core体系-web应用程序-4asp.net core2.0 项目实战-13基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级

标准 asp.NET 中的 OnActionExecuting 等效项?

如何在 asp.net 核心 webapi 控制器中读取请求正文?

ActionFilterAttribute:何时使用 OnActionExecuting 与 OnActionExecutingAsync?

ASP.NET MVC 控制器生命周期