【发布时间】:2009-08-18 11:47:57
【问题描述】:
dotnetnuke 框架中有什么东西可以让我向它传递一个 userId,它会返回包含该 userId 详细信息的 UserInfo 对象。
如果不是,正常的做法是什么?
【问题讨论】:
标签: dotnetnuke dotnetnuke-module
dotnetnuke 框架中有什么东西可以让我向它传递一个 userId,它会返回包含该 userId 详细信息的 UserInfo 对象。
如果不是,正常的做法是什么?
【问题讨论】:
标签: dotnetnuke dotnetnuke-module
试试这个(在 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
只是一个注释。
【讨论】: