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

如何在ASP.NET Core Identity个人资料页显示手机号码?

解决ASP.NET Core Identity个人资料页不显示手机号码的问题

问题原因

页面未从当前用户对象中读取手机号码并赋值给绑定的模型属性,而用户名能正常显示是因为框架默认处理了UserName的绑定逻辑。

解决方案步骤

1. 完善后台IndexModel的OnGet方法

打开对应的Index.cshtml.cs文件,在OnGetAsync方法中从当前用户获取手机号,赋值给Input.PhoneNumber:

public async Task<IActionResult> OnGetAsync()
{
    var user = await _userManager.GetUserAsync(User);
    if (user == null)
    {
        return NotFound($"无法加载用户 ID '{_userManager.GetUserId(User)}'.");
    }

    // 初始化Input模型并赋值手机号
    Input = new InputModel
    {
        PhoneNumber = user.PhoneNumber
    };

    // 用户名赋值(如果模型中有Username属性)
    Username = user.UserName;

    return Page();
}

2. 确保InputModel包含PhoneNumber属性

确认IndexModel中的InputModel类已定义PhoneNumber属性:

public class InputModel
{
    [Phone]
    [Display(Name = "手机号码")]
    public string PhoneNumber { get; set; }
}

3. 验证更新逻辑(可选)

如果需要支持手机号更新,完善OnPostAsync方法,确保修改后的手机号能保存到数据库:

public async Task<IActionResult> OnPostAsync()
{
    if (!ModelState.IsValid)
    {
        return Page();
    }

    var user = await _userManager.GetUserAsync(User);
    if (user == null)
    {
        return NotFound($"无法加载用户 ID '{_userManager.GetUserId(User)}'.");
    }

    if (Input.PhoneNumber != user.PhoneNumber)
    {
        var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, Input.PhoneNumber);
        if (!setPhoneResult.Succeeded)
        {
            StatusMessage = "意外错误:无法设置手机号码。";
            return RedirectToPage();
        }
    }

    await _signInManager.RefreshSignInAsync(user);
    StatusMessage = "个人资料已更新";
    return RedirectToPage();
}

4. 页面代码无需修改

你提供的Index.cshtml中asp-for="Input.PhoneNumber"的绑定是正确的,后台赋值后页面会自动显示数据库中的手机号。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:53:11