如何在 ASP.NET 中显示用户的角色名称

How can i display the Role name for a user in ASP.NET

我有一个 MasterPage,其中我显示了两件事:一个是我用以下命令显示的用户名 <%: Context.User.Identity.GetUserName() %>,一个是用户角色。

如何显示?

谢谢。

如果您有权访问 UserManager,请像这样尝试:

UserManager.FindByName(Context.User.Identity.GetUserName()).Roles

或者,如果您有权访问任何基于身份的用户,您也应该能够像这样获得角色:

AppUser.Roles;

或搜索任何具有特定名称的身份用户并获取其角色:

UserManager.FindByName("Name").Roles;

我正在使用 Identity 2.0

更新:

因此,如果您可以访问母版页代码中的 UserManager 和 RoleManager,则可以编写一个方法来获取这样的用户角色:

    public List<string> GetUserRoles(string username)
    {
        List<string> ListOfRoleNames = new List<string>();
        var ListOfRoleIds = UserManager.FindByName(username).Roles.Select(x => x.RoleId).ToList();
        foreach(string id in ListOfRoleIds)
        {
            string rolename = RoleManager.FindById(id).Name;
            ListOfRoleNames.Add(rolename);
        }

        return ListOfRoleNames;
    }

然后由您决定如何在您的视图中调用它或在加载页面时将这些角色填充给用户。

当您使用 Web 窗体视图引擎时,我假设您必须使用 asp.net MVC 2.0 可用的成员资格。

一个用户可以分配多个角色,下面会循环打印出来:

<% foreach(var role in Roles.GetRolesForUser())
{ %>
     <%:role%>
<% } %>