从 DnnUsers 中的 ArrayList 获取值

Get values from ArrayList in DnnUsers

我关注ArrayList ..

RoleController objRoleController = new RoleController();

ArrayList UserList = objRoleController.GetUsersByRoleName(PortalSettings.PortalId, "Client");

我只想从 UserList 中获取 UserId 和显示名称..我应该怎么做???

UserList 是 UserInfo 对象的列表。您可以从每个 UserInfo 对象的属性中获取值。

试试下面的代码:

RoleController objRoleController = new RoleController();

ArrayList loUserList = objRoleController.GetUsersByRoleName(PortalSettings.PortalId, "Client");

DotNetNuke.Entities.Users.UserInfo loInfo = new UserInfo();

foreach (var foUser in loUserList)
{
    loInfo = new UserInfo();
    loInfo = (DotNetNuke.Entities.Users.UserInfo)foUser;
    int liUserId = loInfo.UserID;
    string lsDisplayName = loInfo.DisplayName;
}

如果您有任何问题,请告诉我。

假设您有一个仅包含 UserID 和 DisplayName 的视图模型,如下所示:

public class UserViewModel
{
    public int Id { get; set; }
    public string DisplayName { get; set; }
}

然后您可以使用以下两种方法之一,具体取决于您使用的 DNN 版本:

public IEnumerable<UserViewModel> GetUsersBefore73()
{
    var objRoleController = new RoleController();
    ArrayList UserList = objRoleController
        .GetUsersByRoleName(PortalSettings.PortalId, "Client");

    var users = from user in UserList.OfType<UserInfo>().ToList<UserInfo>()
        select new UserViewModel() {
            Id = user.UserID,
            DisplayName = user.DisplayName
        };

    return users;
}

在 DNN 7.3 中,我们弃用了实例方法,转而使用工厂来获取角色控制器。我们也停止使用 ArrayList,而是开始使用 List。对于 7.3 及更高版本,您可以使用以下代码:

public IEnumerable<UserViewModel> GetUsersAfter73()
{
    IList<UserInfo> UserList = RoleController
        .Instance
        .GetUsersByRole(PortalSettings.PortalId, "Client");

    var users = from user in UserList
        select new UserViewModel() {
            Id = user.UserID,
            DisplayName = user.DisplayName
        };

    return users;
}