2014-02-28 68 views
0

是否有一種簡單的方法從sharepoint的登錄名「j.smith」中檢索全名,例如「John Smith」?我一直在尋找代碼的年齡。通過在sharepoint 2010中登錄名獲取全名

我有這樣的代碼:

string strName = SPUtility.GetAccountName("j.smith"); 

凡則strName應該是我的全名和 「j.smith」 是我的登錄名。我不認爲它是正確的。從sharepoint的任何建議掌握在那裏?

回答

1

如果全名需要獲取已經被添加到網站或它是確定該用戶被添加到網站,你可以使用用戶:

web.EnsureUser(LoginName).Name 

或者您可以使用用戶配置文件服務並且如果用戶未被添加到站點並且您不想將該用戶添加到該站點,則從他的用戶配置文件中獲取該用戶的全名。

SPServiceContext context = SPServiceContext.GetContext(site); 
UserProfileManager upm = new UserProfileManager(context); 
UserProfile profile = upm.GetUserProfile(@"zsdev\ia"); 
Console.WriteLine(profile.DisplayName); 
+0

謝謝!我仍然有一個問題,我怎樣才能搜索「j.smith」?如果我沒有給「機器」?我只給了「j.smith」參數。不是「machine \\ j.smith」希望你的幫助 – diceyyyy

+0

像ur.GetUserProfile(@「zsdev \ ia」); ..我只給「ia」作爲參數,而不是「zsdev \\ ia」 – diceyyyy

+0

只是提到登錄名,即沒有AD名稱的「j.smith」也可以工作,如果Sharepoint連接到單個域或者即使連接到多個域名,但loginName對於兩個域都是唯一的,即所有連接域中只有一個「j.smith」。 – Unnie

0

如果您有當前的SPWeb,則可以使用web.EnsureUser(loginName).Name。

+0

我這樣做,但它有這個錯誤 0x80004005的更新當前不允許在GET請求。要允許更新GET,請在SPWeb上設置'AllowUnsafeUpdates'屬性。 – diceyyyy

+0

我認爲它正在更新我的用戶.. EnsureUser方法檢查指定的登錄名是否屬於網站的有效用戶,並且如果登錄名尚不存在,請將其添加到網站。 .....(這是不必要的)其他方式只是爲了獲得全名? – diceyyyy