如何检索用户名和姓并将其映射到 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的主要内容,如果未能解决你的问题,请参考以下文章