programing

OnAction에서 컨트롤러 및 작업 이름을 가져오는 방법실행 중?

sourcejob 2023. 6. 28. 21:41
반응형

OnAction에서 컨트롤러 및 작업 이름을 가져오는 방법실행 중?

OnAction에서 현재 실행 중인 컨트롤러/액션을 파악할 수 있습니까?실행 중?

다음 중 하나를 사용할 수 있습니다.

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

사용할 수 있습니다.

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"];

ASP.NET Core의 경우 다음을 사용합니다.

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

작업실행컨텍스트 컨텍스트가 사용자의 컨텍스트가 됩니다.

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"];

속성(예: Attributes)을 사용하는 것 같습니다.ActionFilterAttribute), 만약 그렇다면, 당신은 얻을 수 있습니다.

  • 작업 이름 양식 특성 생성자:

        public CustomProfileAttribute([CallerMemberName]  string caller = null)
        {
            _actionName = caller;
        }
    
  • 컨트롤러 이름:

        public CustomProfileAttribute([CallerMemberName]  string caller = null)
        {
            _controllerName = context.Controller.ToString()
    
  • 또는 컨트롤러와 동작 모두:

        public override void OnActionExecuting(ActionExecutingContext context)
        {
            var controllerAndAction = context.ActionDescriptor.DisplayName;
    

    하지만 그런 경우에 당신은 다음과 같은 추악한 이름을 갖게 될 것입니다.controller.action (action)

언급URL : https://stackoverflow.com/questions/18535241/how-to-get-controller-and-action-name-in-onactionexecuting

반응형