c# - 如何确定 IResourceFilter 中的 Controller 名称和 Action 名称?

标签 c# asp.net-core

我正在编写一个 ASP.NET Core 资源过滤器,我想在 OnResourceExecuting 方法中禁用对某些 Controller /操作的处理。

我在 Microsoft.AspNetCore.Mvc.Filters.ResourceExecutingContext 中找不到任何获取 Controller 名称和操作名称的 API类。

有人有什么想法吗?谢谢!

最佳答案

ResourceExecutingContext 包含一个 ActionDescriptor 属性 ( docs )。

这是 Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptorMicrosoft.AspNetCore.Mvc.RazorPages.PageActionDescriptor 的基类。

因此,当您将其转换为 ControllerActionDescriptor ( docs ) 时,您可以访问 ControllerNameActionName 属性。

if(resourceContext.ActionDescriptor is ControllerActionDescriptor controllerDescriptor)
{
    var controllerName = controllerDescriptor.ControllerName;
}

关于c# - 如何确定 IResourceFilter 中的 Controller 名称和 Action 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52229238/

相关文章:

c# - 如何正确地为单词添加 "a"和 "an"前缀?

c# - 使用 Bootstrap 和 ASP.NET 在面板内左对齐文本但右对齐按钮

c# - 任何缩进 asp.net 代码的库?

session - “IServiceCollection”不包含 'AddSession' 的定义

c# - 创建一个平台来处理未知实体的 CRUD 场景

c# - .NET 中是否有 Dictionary 的替代方案?

c# - 如何在代码隐藏中设置WPF应用程序命令

c# - 在 Debian 8.10 上启动 ASP.NET Core React Web 应用程序时出错

c# - 是否可以创建 Graphql 通用类型

c# - .Net Core 覆盖通用 Controller 的 Controller 路由