【发布时间】:2018-11-28 11:44:13
【问题描述】:
我最近从 MVC5 迁移到 .NET Core 2.1 (MVC)。任何人都可以帮我解决这个问题。
我有我的ApplicationUser,并且我已经扩展了模型/表格来存储用户的FirstName。
在视图中,我希望能够输出当前用户名的值。
视图中的User 是ClaimsPrincipal,所以我需要去数据库获取我需要的值或访问UserManager 来获取它。
现在,我知道我可以在控制器中获取它,但我不想在每次需要时都必须创建一个 JQuery 调用来获取它。
我想要的是能够在服务器端访问它,最好是通过静态帮助类。
在 MVC5 中,我将有一个帮手来完成这项工作。例如这样的事情:
public static string GetCurrentUserFirstName()
{
string _usrRef = HttpContext.Current.User.Identity.GetUserId();
var user = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(_usrRef);
return user.FirstName;
}
但是,.NET Core 不是这样工作的。
在控制器中我可以说:
var user = await _userManager.GetUserAsync(User);
string firstName = user.FirstName;
或者我可以使用 Dapper 和我的连接字符串通过调用进入数据库。
我无法通过构造函数将UserManager 或ConnectionStrings 注入到助手中,因为它是静态的。
有没有办法访问这个静态助手中的任何一个?
这些小变化让你受益最大!
【问题讨论】:
-
您可以将
UserManager输入到视图中,然后将其传递给您的GetCurrentUserFirstName助手。 -
欢呼@KirkLarkin - 我已经在下面发布了我的解决方案。
标签: razor asp.net-core asp.net-identity