如何检索用户名和姓并将其映射到 ViewModel

Posted

技术标签:

【中文标题】如何检索用户名和姓并将其映射到 ViewModel【英文标题】:How to retrieve user Firstname and Last name and map it to ViewModel 【发布时间】:2021-10-12 04:08:02 【问题描述】:

大家好,

下面的 Index 方法效果很好,但我需要更改它以在视图索引中显示 last name and first name

图示索引视图显示Date, UserId and Total Price.

现在我有了一个新要求,即显示用户姓氏和姓氏,而不是 UserId.

这是我在控制器中的索引方法。

Books 表有一个名为 CreateByUser 的字段,它是一个 UserId(Guid 类型) UserManager 表有很多信息,包括我在这里需要的名字和姓氏。 我在这个控制器中注入了UserManager<ApplicationUser> _userManager

你能帮帮我吗?

    public async Task<IActionResult> Index()
    
        var bookData = await _context.Books.Select(books => new BookViewModel
        
            BookId = books.BookId,
            CreateByUser = books.CreateByUser,
            CreatedDate = books.CreatedDate,
            TotalPrice = books.TotalPrice
        ).ToListAsync();

        return View(bookData);
    

【问题讨论】:

根据您设置模型的方式,您可以使用 Include(NavigationProperty) 在查询中包含 User 对象。 【参考方案1】:

我会编写一个通过用户 ID 获取用户名和姓的函数。比如:

public Task<ApplicationUser> GetUsername(string id)
    
        return DbContext.Set<ApplicationUser>().FirstOrDefaultAsync(user => user.Id == id);
    

【讨论】:

我认为 ASP.Net Core Identity 没有 DbContext,从一开始我就在使用 `UserManager _userManager;`。 那么两者之间有什么区别? (身份 DbContext 和 UserManager) 我假设您从数据库中获取数据,而我的答案使用数据库上下文从身份“用户”表中获取具有该 ID 的用户名。我所指的上下文是例如您制作的上下文(例如,供实体框架使用)

以上是关于如何检索用户名和姓并将其映射到 ViewModel的主要内容,如果未能解决你的问题,请参考以下文章

如何知道 ViewModel 中单个地图的完成情况?

将表数据映射到 asp .Net MVC 中的 ViewModel 列表

将viewModel对象映射到ICollection实体

如何检索 Facebook 好友列表并将其保存以进行解析?

我应该如何从会话中检索登录用户并将其传递给我的业务层?

如何从当前用户检索(Jwt)访问令牌并将其传递给 asp.net 样板(abp)中的移动应用程序?