OnActionExecuting에서 현재 실행중인 컨트롤러 / 액션을 파악할 수 있습니까?
답변:
당신은 시도 할 수 ActionDescriptor
의를 ActionExecutingContext
다음과 같이 :
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
string actionName = filterContext.ActionDescriptor.ActionName;
string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName
.....
base.OnActionExecuting(filterContext);
}
당신은 사용할 수 ActionDescriptor
의ActionExecutingContext
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var descriptor = filterContext.ActionDescriptor;
var actionName = descriptor.ActionName;
var controllerName = descriptor.ControllerDescriptor.ControllerName;
......
base.OnActionExecuting(filterContext);
}
ActionExecutingContext 컨텍스트 이것은 당신의 컨텍스트가 될 것입니다 ....
var actionName = ((Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor)context.ActionDescriptor).ActionName;
var controllerName = ((Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor)context.ActionDescriptor).ControllerName;
속성 (예 :)을 사용 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)