Asp.net core 更改控制器.net核心的DisplayName
我正在尝试使用以下命令更改mvc.Net Core应用程序中控制器或操作的显示名称: [DisplayName(“MyName”)]位于操作或控制器的顶部,但当我通过此代码发现并显示它们时:Asp.net core 更改控制器.net核心的DisplayName,asp.net-core,model-view-controller,controller,Asp.net Core,Model View Controller,Controller,我正在尝试使用以下命令更改mvc.Net Core应用程序中控制器或操作的显示名称: [DisplayName(“MyName”)]位于操作或控制器的顶部,但当我通过此代码发现并显示它们时: _actionDescriptorCollectionProvider .ActionDescriptors .Items .OfType<Contro
_actionDescriptorCollectionProvider
.ActionDescriptors
.Items
.OfType<ControllerActionDescriptor>()
.Select(a => new
{
a.DisplayName,
a.ControllerName,
a.ActionName,
});
\u actionDescriptorCollectionProvider
.行动描述符
.项目
第()类
.选择(a=>新建
{
a、 显示名称,
a、 控制器名称,
a、 ActionName,
});
我仍然可以看到如下默认命名:
“MyProject.Controllers.LoginController.Index(MyProject)”
为什么会这样?为什么它没有更改?似乎
DisplayName
属性不尊重DisplayNameAttribute
,即使查看属性所使用的属性,我也找不到任何方法来更改其行为
显然,你可以使用反射
//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();
//使用System.Reflection;
var result=\u actionDescriptorCollectionProvider
.行动描述符
.项目
第()类
.选择(a=>新建
{
DisplayName=a.MethodInfo.GetCustomAttribute()?.DisplayName??a.DisplayName,
a、 控制器名称,
a、 ActionName,
}).ToList();