我有一个MasterPage,其中我显示两件事:一个是我用以下命令<%: Context.User.Identity.GetUserName() %>
显示的用户名,一个是用户角色。
我该如何展示它?
谢谢。
答案 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%>
<% } %>