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

ASP.NET中FindByIdAsync返回数据但无法赋值变量的问题排查

编辑角色时FindByIdAsync返回null的问题修复

以下是排查出的三个核心问题及对应修复方案:

1. 编辑按钮传递了错误参数

原问题:角色列表视图里的编辑按钮,传递的是@Model.CurrentRoles整个集合,而非当前角色的@item.Id。这导致后端拿到的不是有效角色ID,自然查不到数据。

修复:修改编辑按钮的路由参数,明确传递当前项的ID:

<a asp-page="EditRole" asp-route-id="@item.Id" class="btn btn-primary">编辑</a>

2. 页面模型ID类型与IdentityRole不匹配

原问题:EditRole页面模型的Id属性定义为int类型,但ASP.NET Identity的IdentityRole默认Id是string类型。类型不匹配会导致参数绑定失败,后端拿到的ID为空或无效值。

修复:将页面模型中的Id属性改为string类型:

public class EditRoleModel : PageModel
{
    [BindProperty(SupportsGet = true)]
    public string Id { get; set; }
    // 其他属性和逻辑...
}

3. OnGet方法错误重定向,未传递模型到页面

原问题:OnGet方法创建EditRoles模型后直接重定向到Index页,导致编辑页面无法获取到模型数据,同时也打断了正常的页面加载流程。

修复:移除重定向逻辑,直接查询角色数据并赋值给页面模型,最后返回当前编辑页面:

public async Task<IActionResult> OnGetAsync()
{
    if (string.IsNullOrWhiteSpace(Id))
    {
        return NotFound();
    }

    var role = await _roleManager.FindByIdAsync(Id);
    if (role == null)
    {
        return NotFound();
    }

    // 将角色数据映射到页面模型属性
    RoleName = role.Name;
    // 其他必要的赋值操作...

    return Page(); // 返回编辑页面,而非重定向到Index
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:32:11