MVC 5 - 获取userid的任何用户名

时间:2014-11-24 13:54:40

标签: c# visual-studio asp.net-mvc-5

我有一个MVC 5应用程序,它有一组对象,这些对象使用从以下位置获得的值引用回创建它们的用户:

User.Identity.GetUserId();

问题是我需要能够在任何时候解析该帐户的用户名,以便在查看给定对象时可以向用户显示该用户名。

为了清楚起见:我有一个存储对象,其属性是UserId。我在创建时从上面的代码中获得了这个值。其他人现在已登录,需要知道与该存储对象的用户标识关联的用户名。

3 个答案:

答案 0 :(得分:2)

如果没有查找存储用户信息的位置,这将无效。

您可以考虑在HTML帮助程序中实现该查找,以便在需要时使用它。

如果您使用的是OR-Mapper,则应该以初始查询加入真实用户。

答案 1 :(得分:0)

使用Session

 Session["Username"] = data.Username;

答案 2 :(得分:0)

这是一篇很老的帖子,但我遇到了与op相同的问题。在发表评论时,他对自己的帖子说:“

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

我认为该框架实际上确实具有op所寻求的内容,尽管我不确定它会被称为快速。

设置UserManager后,可以访问名为

的方法
FindByName(username)

我用SO C# post中的答案提示我找到这个方法。那篇文章解释了如何走另一条路,即从UserID获取UserName,但是一旦设置了UserManager,就会有一些可以使用的Find ...方法,包括上面提到的那个,这就是op正在寻找。

可以在vb.net

中按如下方式设置UserManager
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#是否足以发布该代码;或许其他人可以做到这一点。无论如何,它对我有用。