Asp.net 如何在OnActionExecuting中获取控制器和操作名称?
是否可以在OnActionExecuting中找出当前正在执行的控制器/操作?您可以使用Asp.net 如何在OnActionExecuting中获取控制器和操作名称?,asp.net,asp.net-mvc-4,Asp.net,Asp.net Mvc 4,是否可以在OnActionExecuting中找出当前正在执行的控制器/操作?您可以使用 您可以尝试的,如下所示: protected override void OnActionExecuting(ActionExecutingContext filterContext) { string actionName = filterContext.ActionDescriptor.ActionName; string controllerName = filterContext.Act
您可以尝试的,如下所示:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
string actionName = filterContext.ActionDescriptor.ActionName;
string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName
.....
base.OnActionExecuting(filterContext);
}
您可以查看
路由数据
:
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;
对于ASP.NET Core,请使用以下命令:
var controllerName = ((ControllerBase)filterContext.Controller)
.ControllerContext.ActionDescriptor.ControllerName;
var actionName = ((ControllerBase)filterContext.Controller)
.ControllerContext.ActionDescriptor.ActionName;
我猜您使用了属性(例如
actionfilteratAttribute
),如果是这样,您可以
- 操作名称表单属性构造函数:
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)
如果这些答案中的任何一个都解决了你的问题,你应该考虑把它当作一个被接受的。@ RealAlFLASH让我成为Navi,在这里说:“嘿!听着!请给我一个答案”这个答案是。
public CustomProfileAttribute([CallerMemberName] string caller = null)
{
_controllerName = context.Controller.ToString()
public override void OnActionExecuting(ActionExecutingContext context)
{
var controllerAndAction = context.ActionDescriptor.DisplayName;