我有一个RoleGroup
,里面有一些Roles
。用户只能属于这些角色之一。如何根据用户所属的RoleName
获取RoleGroup
?有什么想法吗?
Dim roleGroupOmniProfiles = RoleController.GetRoleGroupByName(PortalSettings.Current.PortalId, "OmniProfiles")
问题在这里
Dim omniProfile = roleGroupOmniProfiles.Roles.Any(Function(role) oUser.UserID)
答案 0 :(得分:1)
roleGroupOmniProfiles
包含KeyValuePair<string, RoleInfo>
的集合,因此您可以循环播放它们,如下所示。
但我不确定您可以RoleName
从RoleGroup
获得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));