2014-11-24 59 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#以及足够发布的代码;也许别人可以做到这一点。无论如何,它为我工作。

相关问题