更改控制器 .net 核心的显示名称
Changing DisplayName of controller .net core
我正在尝试使用以下方法更改我的 mvc .Net Core 应用程序中控制器或操作的显示名称:
[DisplayName("MyName")] 在动作或控制器的顶部,但是当我通过以下代码发现并显示它们时:
_actionDescriptorCollectionProvider
.ActionDescriptors
.Items
.OfType<ControllerActionDescriptor>()
.Select(a => new
{
a.DisplayName,
a.ControllerName,
a.ActionName,
});
我仍然看到这样的默认命名:
“MyProject.Controllers.LoginController.Index(我的项目)”
为什么是这样?为什么它没有改变?
似乎 DisplayName
属性 不尊重 DisplayNameAttribute
,即使在查看 TypeNameHelper 之后我也找不到任何方法来改变它的行为由 属性.
您可以做的显而易见的事情是使用反射
//using System.Reflection;
var result = _actionDescriptorCollectionProvider
.ActionDescriptors
.Items
.OfType<ControllerActionDescriptor>()
.Select(a => new
{
DisplayName = a.MethodInfo.GetCustomAttribute<DisplayNameAttribute>()?.DisplayName ?? a.DisplayName,
a.ControllerName,
a.ActionName,
}).ToList();
我正在尝试使用以下方法更改我的 mvc .Net Core 应用程序中控制器或操作的显示名称: [DisplayName("MyName")] 在动作或控制器的顶部,但是当我通过以下代码发现并显示它们时:
_actionDescriptorCollectionProvider
.ActionDescriptors
.Items
.OfType<ControllerActionDescriptor>()
.Select(a => new
{
a.DisplayName,
a.ControllerName,
a.ActionName,
});
我仍然看到这样的默认命名: “MyProject.Controllers.LoginController.Index(我的项目)” 为什么是这样?为什么它没有改变?
似乎 DisplayName
属性 不尊重 DisplayNameAttribute
,即使在查看 TypeNameHelper 之后我也找不到任何方法来改变它的行为由 属性.
您可以做的显而易见的事情是使用反射
//using System.Reflection;
var result = _actionDescriptorCollectionProvider
.ActionDescriptors
.Items
.OfType<ControllerActionDescriptor>()
.Select(a => new
{
DisplayName = a.MethodInfo.GetCustomAttribute<DisplayNameAttribute>()?.DisplayName ?? a.DisplayName,
a.ControllerName,
a.ActionName,
}).ToList();