2014-11-24 76 views
0

我有一個MVC 5應用程序,它具有一組引用回創建它們利用所獲得的值的用戶對象:MVC 5 - 通過用戶ID得到任何的用戶名

User.Identity.GetUserId(); 

的問題是我需要能夠在任何時候解析該帳戶的用戶名,以便在查看給定對象時可以向用戶顯示該用戶名。

爲了清楚:我有一個存儲的對象,該對象的屬性是用戶標識。我在創建時從上面的代碼中獲得了該值。現在有人正在登錄,需要知道與該存儲對象的用戶名關聯的用戶名。

+1

你能不能使用LINQ查詢只是分貝? – jbutler483 2014-11-24 14:07:11

+0

謝謝jbutler。這是我的後備。我不想直接從控制器那裏做出來或保持關注分開,它需要一個新的存儲庫類等我只是想通過這種需求將是相當普遍的,並會有一個方法調用用戶內/身份框架。 – 2014-11-24 14:10:50

+1

這不是你退回,你將*有*查詢數據集,以便相互參照,ID與名稱 - 或保存名稱,而不是(不是最安全的選擇記) – jbutler483 2014-11-24 14:12:43

回答

2

這不是沒有查找到您的用戶信息存儲工作。

你可能需要考慮執行,在一個HTML幫助查找使用它在任何你需要它。

如果您使用的是OR映射器,你的目標應該是與你的初始查詢加入了真正的用戶。

+0

感謝亞歷山大,我認爲這將是必然的。我已將ASP身份表和網站的其他部分分開,但似乎需要一個硬鏈接或助手。你有我的感謝。同樣給別人。 – 2014-11-24 14:14:08

0

使用Session

Session["Username"] = data.Username; 
+0

那會不會是當前用戶呢?我從擁有上面獲得的用戶標識的角度來談論,但沒有人或其他人可以登錄。 – 2014-11-24 14:02:41

0

這是一個古老的職位,但我碰到它與作爲運了同樣的問題。在他自己的崗位上做出了評論運說:

assumed ... Identity framework would have ... quick access ... of doing this 

我相信框架實際上有何運一直在尋找,但我不能肯定它會被稱爲快。

當UserManager是設置有訪問方法稱爲

FindByName(username) 

我以前的答案在這SO C# post到的線索我找到這個方法。這篇文章解釋瞭如何去另一種方式,即從UserID獲取UserName,但是一旦UserManager被設置,就會有許多可以使用的Find ...方法,包括上面提到的方法,這就是op正在尋找。

的的UserManager可以設置爲在vb.net如下

Using appDb As New ApplicationDbContext 
    Dim userStore = New UserStore(Of ApplicationUser)(appDb) 
    Dim myUserManager = New UserManager(Of ApplicationUser)(userStore) 
    Dim userID = myUserManager.FindByName(userName) 
End Using 

我不知道C#以及足夠發佈的代碼;也許別人可以做到這一點。無論如何,它爲我工作。