dotnetnuke 框架中有什么东西可以让我向它传递一个 userId,它会返回填充了该 userId 详细信息的 UserInfo 对象。
如果不是,那么正常的做法是什么?
dotnetnuke 框架中有什么东西可以让我向它传递一个 userId,它会返回填充了该 userId 详细信息的 UserInfo 对象。
如果不是,那么正常的做法是什么?
试试这个(在 DNN 5.x 中使用 C#)
private UserInfo _currentUser =
DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo();
然后稍后使用 UserInfo ...
int UserID = _currentUser.UserID
我使用了 bdukes 发布的方式进行了一项修改: PortalId 可以从 PortalSettings 获取:
DotNetNuke.Entities.Users.UserInfo user = DotNetNuke.Entities.Users.UserController.GetUser(PortalSettings.PortalId, user_id, true);
要获取当前用户,从 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 上下文提供的属性,因此您可以像上面一样简单地键入它。
我希望这有帮助。
我相信 DotNetNuke.Entities.Users.UserController 有一个方法 (GetUser) 可以做到这一点,如果你也有一个门户 ID。用户可以跨门户共享,因此(显然)有必要知道您为其请求用户信息的门户,然后才能正确填写 UserInfo 对象。
如果您只有用户 ID 而没有门户 ID,我建议您先看看是否也可以获得门户 ID。如果没有,你需要去数据库获取你需要的东西。理想情况下,您将尽可能少地呆在那里(因为数据库不是有保证的 API)。因此,如果您只是进行快速查询以获取用户的门户 ID:
SELECT PortalID From {databaseOwner}{objectQualifier}UserPortals WHERE UserID = @userId
然后,您可以使用 UserController.GetUser 来检索您需要的内容。
它不是返回用户 ID 是什么问题
Dim nowUser As UserInfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo
response.write(nowUser)
如果您需要获取当前用户,则更简单:
Dim nowUser As UserInfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo
只是一个注释。