2009-08-18 5 views

Antwort

2

Ich glaube, dass DotNetNuke.Entities.Users.UserController hat eine Methode (GetUser), die das tun, wenn Sie auch eine Portal-ID haben. Benutzer können über Portale hinweg gemeinsam genutzt werden. Daher ist es (scheinbar) notwendig, das Portal zu kennen, für das Sie die Benutzerinformationen anfordern, bevor sie das UserInfo-Objekt ordnungsgemäß ausfüllen können.

Wenn Sie nur eine Benutzer-ID und keine Portal-ID haben, würde ich Ihnen zunächst vorschlagen, ob Sie auch eine Portal-ID erhalten können. Wenn nicht, müssen Sie in die Datenbank gehen, um zu bekommen, was Sie brauchen. Im Idealfall sind Sie so wenig wie möglich da (da die Datenbank keine garantierte API ist). Also, wenn Sie nur eine schnelle Abfrage tun, um eine Portal-ID für den Benutzer zu erhalten:

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

Sie können dann UserController.GetUser verwenden, um abzurufen, was Sie brauchen.

1

Wenn Sie den aktuellen Benutzer erhalten müssen, es ist einfacher:

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

Nur eine Notiz.

2

Es ist nicht Benutzer-ID zurückgeben, was das Problem ist

Dim nowUser As UserInfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo 
response.write(nowUser) 
+0

eigentlich würden Sie tun 'response.write (nowUser.UserID) – braindice

7

Versuchen Sie, diese (in DNN 5.x mit C#)

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

dann die Userinfo verwenden später ...

int UserID = _currentUser.UserID 
5

Ich habe den Weg von Bdukes mit einer Änderung verwendet: PortalId kann von PortalSettings:

abgerufen werden
DotNetNuke.Entities.Users.UserInfo user = DotNetNuke.Entities.Users.UserController.GetUser(PortalSettings.PortalId, user_id, true); 
+0

Irgendeine Idee, wie dies von einem Javascript getan werden kann? –

+0

Wenn Sie auf DNN 7 sind, können Sie das Webapi verwenden, um einen Anruf zu tätigen und die Informationen zu erhalten - das ist ziemlich einfach – braindice

3

Um den aktuellen Benutzer zu erhalten, ab Version 7.3 sind alle oben genannten veraltet. Nun müssen Sie den Zugriff der Benutzer Informationen über die Instance Eigenschaft und die GetCurrentUserInfo() Methode verwenden, das heißt:

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

Daher könnte man die UserId erhalten, wie so:

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

So, da ein Benutzer-ID, Sie können die Benutzer-Informationen wie diese:

UserController.GetUserById(PortalId,your_user_id) 

Beachten Sie, dass PortalId eine Eigenschaft von DNN Kontext zur Verfügung gestellt ist, so können Sie einf Gib es wie oben beschrieben ein.

Ich hoffe, das hilft.

Verwandte Themen