4

dotnetnuke 框架中有什么东西可以让我向它传递一个 userId,它会返回填充了该 userId 详细信息的 UserInfo 对象。

如果不是,那么正常的做法是什么?

4

6 回答 6

7

试试这个(在 DNN 5.x 中使用 C#)

private UserInfo _currentUser =
                   DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo();

然后稍后使用 UserInfo ...

int UserID = _currentUser.UserID
于 2010-08-29T14:18:17.853 回答
5

我使用了 bdukes 发布的方式进行了一项修改: PortalId 可以从 PortalSettings 获取:

DotNetNuke.Entities.Users.UserInfo user = DotNetNuke.Entities.Users.UserController.GetUser(PortalSettings.PortalId, user_id, true);
于 2010-09-03T08:08:12.897 回答
3

要获取当前用户,从 7.3 版开始,上述所有内容都已弃用。现在您需要通过Instance属性和GetCurrentUserInfo()方法使用访问用户信息,即:

DotNetNuke.Entities.Users.UserController.Instance.GetCurrentUserInfo()

因此你可以得到UserId这样的:

DotNetNuke.Entities.Users.UserController.Instance.GetCurrentUserInfo().UserID

因此,给定一个用户 ID,您可以像这样获取用户的信息:

UserController.GetUserById(PortalId,your_user_id)

请注意,这PortalId是 DNN 上下文提供的属性,因此您可以像上面一样简单地键入它。

我希望这有帮助。

于 2017-02-16T13:42:50.703 回答
2

我相信 DotNetNuke.Entities.Users.UserController 有一个方法 (GetUser) 可以做到这一点,如果你也有一个门户 ID。用户可以跨门户共享,因此(显然)有必要知道您为其请求用户信息的门户,然后才能正确填写 UserInfo 对象。

如果您只有用户 ID 而没有门户 ID,我建议您先看看是否也可以获得门户 ID。如果没有,你需要去数据库获取你需要的东西。理想情况下,您将尽可能少地呆在那里(因为数据库不是有保证的 API)。因此,如果您只是进行快速查询以获取用户的门户 ID:

SELECT PortalID From {databaseOwner}{objectQualifier}UserPortals WHERE UserID = @userId

然后,您可以使用 UserController.GetUser 来检索您需要的内容。

于 2009-08-18T14:03:28.287 回答
2

它不是返回用户 ID 是什么问题

Dim nowUser As UserInfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo
response.write(nowUser)
于 2010-08-20T07:23:55.923 回答
1

如果您需要获取当前用户,则更简单:

Dim nowUser As UserInfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo

只是一个注释。

于 2009-09-24T23:44:20.983 回答