ActionExecutingContext中的ActionDescriptor不包含ActionName和MethodInfo信息。

19
如您所见,在我的ActionFilter中,我尝试获取ActionExecutingContext.ActionDescriptor的ActionName和MethodInfo。但编译器说ActionDescriptor没有定义ActionName和MethodInfo。但是如果我调试应用程序,我可以看到ActionDescriptor包含这些属性(请参见下面的图片)。我正在使用ASP .NET Core,我不知道问题可能在哪里。

enter image description here enter image description here

1个回答

34
您需要将其转换为 ControllerActionDescriptor,因为该类具有您所需的属性。
var descriptor = context.ActionDescriptor as ControllerActionDescriptor;
var actionName = descriptor.ActionName;
var methodInfo = descriptor.MethodInfo;

3
@CodingYoshi,您如何确定需要将其强制转换为ControllerActionDescriptor而不使用StackOverflow?我可以在运行时使用这段代码,但设计时有没有办法做到这一点? System.Type t = context.ActionDescriptor.GetType(); - Soenhay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接