.NET Core 6 MVC Identity中Razor页面user.FirstName为空问题
解决.NET Core 6 MVC Identity显示用户FirstName为null的问题
问题根源
你在OnGet方法里直接把ApplicationUser user作为参数,HTTP GET请求不会自动传入当前登录用户的实例,所以这个user对象是null,自然user.FirstName也为null。
修复步骤
修改PageModel的OnGet方法
去掉方法参数里的ApplicationUser user,通过UserManager的GetUserAsync方法获取当前登录用户,注意这个方法是异步的,要把OnGet改成异步方法:using CubeAuthAttempt1.Areas.Identity.Data; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.Threading.Tasks; namespace CubeAuthAttempt1.Areas.Identity.Pages.Account.Manage { public class WorkModel : PageModel { private readonly UserManager<ApplicationUser> _userManager; public WorkModel(UserManager<ApplicationUser> userManager) { _userManager = userManager; } public async Task OnGetAsync() { var user = await _userManager.GetUserAsync(User); if (user != null) { ViewData["firstname"] = user.FirstName; } } } }添加授权特性(可选但推荐)
确保只有登录用户才能访问这个页面,在WorkModel类上方添加[Authorize]特性:[Authorize] public class WorkModel : PageModel { // ... 原有代码 }验证数据库中用户数据
检查数据库里的AspNetUsers表,确认对应用户的FirstName字段确实有值。如果注册时没有收集并保存FirstName,需要修改注册页面代码,在注册时把用户输入的FirstName存入数据库。
额外说明
User是PageModel内置属性,代表当前登录用户的身份。GetUserAsync(User)会根据当前身份从数据库中获取完整的ApplicationUser实例,包含你自定义的FirstName等字段。
内容的提问来源于stack exchange,提问作者Jason Rubio
相关产品推荐
相关产品推荐

