0

我有一个RoleGroupRoles里面。一个用户只能属于这些角色之一。我将如何获得用户所属的RoleName基础?RoleGroup有任何想法吗?

Dim roleGroupOmniProfiles = RoleController.GetRoleGroupByName(PortalSettings.Current.PortalId, "OmniProfiles")

问题就在这里

Dim omniProfile = roleGroupOmniProfiles.Roles.Any(Function(role) oUser.UserID)
4

1 回答 1

1

roleGroupOmniProfiles包含 的集合KeyValuePair<string, RoleInfo>,因此您可以如下所示循环它们。

但是我不确定您是否可以RoleName从 aRoleGroup获得,UserID因为UserID没有直接链接到RoleGroup. 不应该是您根据用户获取所有角色UserID并检查属于哪个RoleGroup角色Roles(如果有)。

C#

var roleGroupOmniProfiles = RoleController.GetRoleGroupByName(PortalId, "OmniProfiles");

if (roleGroupOmniProfiles != null)
{
    foreach (KeyValuePair<string, RoleInfo> role in roleGroupOmniProfiles.Roles)
    {
        Label1.Text += role.Key + " | " + role.Value.RoleName + "<br>";
    }
}

或作为单线

RoleInfo roleInfo = roleGroupOmniProfiles.Roles.Where(x => x.Value.RoleID == 15).FirstOrDefault().Value;

VB

If (Not (roleGroupOmniProfiles) Is Nothing) Then
    For Each role As KeyValuePair(Of String, RoleInfo) In roleGroupOmniProfiles.Roles
        Label1.Text += role.Key + " | " + role.Value.RoleName + "<br>"
    Next
End If

更新

要检查用户是否属于某个组,您可以使用它

DotNetNuke.Entities.Users.UserInfo user = DotNetNuke.Entities.Users.UserController.GetUserByName("userName");
bool isInGroup = roleGroupOmniProfiles.Roles.Keys.Any(role => user.IsInRole(role)); 
于 2016-11-24T16:59:28.943 回答