![](/img/trans.png)
[英]ASP.NET Core MVC Identity - how to get current logged in user in view?
[英]ASP.NET CORE 5.0 Identity Display current logged in user
我試圖在Index Page
中顯示哪個用戶提交ticket
。 在我的 Model 我添加屬性
public int? UserId { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
在 controller 我有類似的東西
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Upsert(TicketVM ticketVM)
{
if (ModelState.IsValid)
{
if (ticketVM.Ticket.Id == 0)
{
ticketVM.Ticket.Status = TicketStatus.Otvoren.ToString();
_unitOfwork.Ticket.Add(ticketVM.Ticket);
}
else
{
_unitOfwork.Ticket.Update(ticketVM.Ticket);
}
_unitOfwork.Save();
return RedirectToAction(nameof(Index));
}
return View(ticketVM);
}
到目前為止,我嘗試添加類似這樣的內容
var userEmail = User.FindFirstValue(ClaimTypes.Email);
ticketVM.Ticket.ApplicationUser.Name = userEmail;
這是我收到錯誤消息的問題
Object reference not set to an instance of an object.
所以我的問題是,如何在用戶登錄並提交票證后在 IndexPage 中分配我需要顯示他/她的用戶名或 email 地址。
應用程序用戶.cs
public class ApplicationUser : IdentityUser
{
[Required]
[Display(Name = "Ime")]
public string Name { get; set; }
[Required]
[Display(Name = "Adresa")]
public string StreetAddress { get; set; }
[Required]
[Display(Name = "Grad")]
public string City { get; set; }
[Required]
[Display(Name = "Postanski broj")]
public string PostalCode { get; set; }
public int? ClientId { get; set; }
[ForeignKey("ClientId")]
public Client Client { get; set; }
[NotMapped]
public string Role { get; set; }
}
該錯誤表明 ApplicationUser 是NULL 。 因此,當您嘗試訪問 Name 屬性時,它會引發該錯誤。 假設它是現有用戶,您可以這樣做:
ticketVM.Ticket.ApplicationUser = _dbContext.Users.FirstOrDefault(u => u.Email == userEmail);
您還可以使用 class 內置的 UserManager,它也具有 FindByEmail() 方法。 但關鍵是,首先使用 userEmail 從數據庫中獲取 ApplicationUser。 如果它是新用戶,那么您需要創建一個新的 ApplicationUser 才能訪問 Name 屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.