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

时间:2015-06-16 12:37:33

标签: c# asp.net asp.net-mvc asp.net-mvc-2 asp.net-membership

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

我该如何展示它?

谢谢。

2 个答案:

答案 0 :(得分:0)

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

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

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

AppUser.Roles;

或者搜索具有特定名称的任何Identity用户并获得其角色:

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;
    }

然后,您可以在视图中调用此方法,或在加载页面时将这些角色填充给用户。

答案 1 :(得分:0)

当您使用Web窗体视图引擎时,我假设您必须使用asp.net Membership,因为它可用于MVC 2.0。

可以为用户分配多个角色,以下内容将循环并打印出来:

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