You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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。

修复步骤

  1. 修改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;
                }
            }
        }
    }
    
  2. 添加授权特性(可选但推荐)
    确保只有登录用户才能访问这个页面,在WorkModel类上方添加[Authorize]特性:

    [Authorize]
    public class WorkModel : PageModel
    {
        // ... 原有代码
    }
    
  3. 验证数据库中用户数据
    检查数据库里的AspNetUsers表,确认对应用户的FirstName字段确实有值。如果注册时没有收集并保存FirstName,需要修改注册页面代码,在注册时把用户输入的FirstName存入数据库。

额外说明

  • User是PageModel内置属性,代表当前登录用户的身份。
  • GetUserAsync(User)会根据当前身份从数据库中获取完整的ApplicationUser实例,包含你自定义的FirstName等字段。

内容的提问来源于stack exchange,提问作者Jason Rubio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:54:25