gpt4 book ai didi

c# - 从局部 View 中获取 ApplicationUser

转载 作者:太空宇宙 更新时间:2023-11-03 23:43:43 25 4
gpt4 key购买 nike

我问过有关旧 MVC 版本和成员资格的类似问题,但这些解决方案不适用于 Idendity 和 MVC 6。
我想在 _LoginPartial.cshtml 文件中显示用户的名字。因此,我想访问当前登录用户的 ApplicationUser.FirstName 而不是 "Hello "+ User.Identity.GetUserName() + "!"。执行此操作的最佳方法是什么?

最佳答案

在我看来,我提出了一个更好的解决方案,因为每个请求只需要搜索一次配置文件。

首先:创建用户服务

public interface IUserProfileLoader
{
Task<ApplicationUser> GetCurrentApplicationUser(ClaimsPrincipal user);
}

public class UserServices : IUserProfileLoader
{
private readonly UserManager<ApplicationUser> _userManager;
private ApplicationUser _CurrentUser;
public UserServices([FromServices]UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
public async Task<ApplicationUser> GetCurrentApplicationUser(ClaimsPrincipal user)
{
if (_CurrentUser == null)
{
_CurrentUser = await _userManager.FindByIdAsync(user.GetUserId());
}
return _CurrentUser;
}
}

然后注册服务

ConfigureServices 中添加以下内容:

// Add user profile services.
services.AddScoped<IUserProfileLoader, UserServices>();

在 View 中使用

注入(inject)服务:

@inject IUserProfileLoader UserServices

然后像这样访问属性:

@((await UserServices.GetCurrentApplicationUser(User)).Email)

用于其他地方...

您可以在 Action 中访问该服务(例如)使用:

[FromServices]IUserProfileLoader UserServices

希望对您有所帮助。

关于c# - 从局部 View 中获取 ApplicationUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28196918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com