2012-06-20 6 views
6

Czy program SharePoint 2010 przechowuje nazwę konta bieżącego użytkownika w ogólnie dostępnym obiekcie JS?SharePoint uzyskać aktualną nazwę konta użytkownika?

Każde rozwiązanie, jakie mogę znaleźć, wiąże się z pewną odmianą połączenia z serwisem ajaxowym i wydaje się, że jest to bardzo ciężkie rozwiązanie, które pozwala uzyskać dostęp do tego, co powinno być banalną informacją.

miejsca mogę przejść łatwo:

  • Pobierz bieżący identyfikator użytkownika z __spUserId
  • Pobierz aktualną nazwę użytkownika przez skrobanie html wstęgi (np $('#zz17_Menu').text())

Ale żadne z tych nie jest nazwą konta.

Czego raczej nie zrobi:

  • Pobiera aktualny informacji użytkownika z połączenia SOAP do GetUserProfileByName
  • Pobiera aktualny informacji użytkownika poprzez wywołanie AJAX dla ../_layouts/userdisp.aspx

Odpowiedz

5

Dla każdego, kto natyka się na to, a rok później zorientowali się, jak to zrobić.

Do twojej strony wzorcowej register SPSWC (jeśli używasz starter master Randy'ego Drisgilla, to już tam będzie).

<%@ Register Tagprefix="SPSWC" Namespace="Microsoft.SharePoint.Portal.WebControls" Assembly="Microsoft.SharePoint.Portal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 

Następnie przed chcesz uzyskać dostęp do właściwości (np: nazwa_użytkownika) pociągnąć w danych

<SPSWC:ProfilePropertyLoader runat="server"/> 

Następny, dostęp do jednej z właściwości, polecam korzystania TitleMode osadzić go w Element <script>.

<script> 
    var username = '<SPSWC:ProfilePropertyValue PropertyName="UserName" TitleMode="true" runat="server"/>'; 
</script> 

Teraz używać go jak pokazano w tym PasteBin demo zapełnić globalnym z kilku właściwości, takie jak imię, nazwisko, nazwa użytkownika, zdjęcie profilowe, status.

+0

świetny pomysł i dobra alternatywa dla odwoływania się do asynchronicznych połączeń z usługami SharePoint.Działa również całkiem dobrze z kątem, ponieważ można wtedy zdefiniować wartość kątową z danymi użytkownika w czasie ładowania aplikacji zamiast używania usługi kątowej do "leniwego obciążenia" informacji o użytkowniku. – SPArchaeologist

1

Naprawdę trzeba wykonać połączenie z serwisem, aby wykonać to niezawodnie. Na szczęście SPServices czyni to szybko i bezboleśnie.

http://spservices.codeplex.com/wikipage?title= $% 28% 29.SPServices.SPGetCurrentUser

$().SPServices.SPGetCurrentUser({ 
    fieldName: "Name", 
    debug: false 
}); 
+0

Niestety "szybki i bezbolesny" dla mnie, nie oznacza szybkiego i bezbolesnego dla mojej aplikacji. SPServices używa tej drugiej trasy, o której wspomniałem, przynosi kompletną kopię pliku ../_layouts/userdisp.aspx, która w moim środowisku ma 22 KB danych, które zajmuje sekundę do pobrania, a następnie pobiera jQuery, aby zainicjować całą odpowiedź jako dokument fragment, a na koniec wierci w dół, aby uzyskać informacje. Jest to podobne do mnie, gdy buduję dom i czekam na twoje nazwisko na skrzynce pocztowej. – Sinetheta

+2

Jeśli wydajność jest Twoim celem, sugeruję napisanie niestandardowej usługi REST, która pobiera identyfikator użytkownika i zwraca nazwę użytkownika. W ten sposób wszystkie ciężkie unoszenia można wykonać po stronie serwera. –