Asp.net core 如何在ASP.NET Core identity中更改视图中区域、控制器和操作的显示名称?

Asp.net core 如何在ASP.NET Core identity中更改视图中区域、控制器和操作的显示名称?,asp.net-core,asp.net-identity,identity,Asp.net Core,Asp.net Identity,Identity,我想为角色创建一个动态标识,管理员可以添加对角色的访问权限。我创建了它,它工作正常,但在视图中它显示了每个区域、控制器和操作的实际名称。我想将这些名称更改为另一种显示语言,但我想在表中插入实际名称。我该怎么做?我找了很多,但找不到任何解决办法 这是返回所有区域、控制器和操作名称的类和方法: public class MvcUtilities : IMvcUtilities { /// <summary> /// Will add all area and contro

我想为角色创建一个动态标识,管理员可以添加对角色的访问权限。我创建了它,它工作正常,但在视图中它显示了每个区域、控制器和操作的实际名称。我想将这些名称更改为另一种显示语言,但我想在表中插入实际名称。我该怎么做?我找了很多,但找不到任何解决办法

这是返回所有区域、控制器和操作名称的类和方法:

public class MvcUtilities : IMvcUtilities
{
    /// <summary>
    /// Will add all area and controller and action names into a List of tuple.
    /// </summary>
    public MvcUtilities(IActionDescriptorCollectionProvider actionDescriptorCollectionProvider)
    {
        var actionDescriptors = actionDescriptorCollectionProvider.ActionDescriptors.Items;
        foreach (var actionDescriptor in actionDescriptors)
        {
            var descriptor = actionDescriptor as ControllerActionDescriptor;
            if (descriptor == null) continue;

            var controllerTypeInfo = descriptor.ControllerTypeInfo;
            //var actionMethodInfo = descriptor.MethodInfo;

            ValueTuples.Add((controllerTypeInfo.GetCustomAttribute<AreaAttribute>()?.RouteValue,
                descriptor.ControllerName,
                descriptor.ActionName));
        }
    }

    public IList<(string areaName, string controllerName, string actionName)> ValueTuples { get; }
        = new List<(string areaName, string controllerName, string actionName)>();

    public IList<ActionAndControllerName> AreaAndActionAndControllerNamesList()
    {
        var list = ValueTuples.Distinct().Select(t => new ActionAndControllerName()
        {
            AreaName = t.areaName,
            ControllerName = t.controllerName+"Controller",
            ActionName = t.actionName
        });

        return list.Where(l=>(l.ControllerName!="AccountController")&&(l.ActionName!="Management"))
            
     
 .OrderByDescending(ar=>ar.AreaName).ThenBy(c=>c.ControllerName).ThenBy(a=>a.ActionName).ToList();
    }
公共类MVC实用程序:IMvcUtilities
{
/// 
///将所有区域、控制器和操作名称添加到元组列表中。
/// 
公共MVcutility(IActionDescriptorCollectionProvider操作描述符CollectionProvider)
{
var actionDescriptors=actionDescriptorCollectionProvider.actionDescriptors.Items;
foreach(actionDescriptors中的var actionDescriptor)
{
var descriptor=作为ControllerActionDescriptor的actionDescriptor;
如果(描述符==null)继续;
var controllerTypeInfo=descriptor.controllerTypeInfo;
//var actionMethodInfo=descriptor.MethodInfo;
添加((controllerTypeInfo.GetCustomAttribute()?.RouteValue,
descriptor.ControllerName,
描述符(ActionName));
}
}
公共IList值元组{get;}
=新列表();
公共IList区域和操作与控制器列表()
{
var list=ValueTuples.Distinct().Select(t=>newactionAndControllerName()
{
AreaName=t.AreaName,
ControllerName=t.ControllerName+“控制器”,
ActionName=t.ActionName
});
返回列表。其中(l=>(l.ControllerName!=“AccountController”)&&(l.ActionName!=“Management”))
.OrderByDescending(ar=>ar.AreaName).ThenBy(c=>c.ControllerName).ThenBy(a=>a.ActionName).ToList();
}

这只是您管理操作的设计,因此基本上与标识无关。您拥有原始信息(操作名称、控制器名称、区域名称),如果您想显示一些友好或翻译的名称,只需声明一个服务来转换名称。这甚至可以简化为本地化或翻译问题。