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

在两个Model或Razor Pages之间传递ID问题求助

解决.NET Core Razor中新增用户后ID传递为空的问题

看起来你遇到的问题很典型——EF Core中新增实体后,主键ID没有被正确传递到后续页面。我来帮你一步步排查和解决:

第一步:确认保存实体后ID已被正确赋值

EF Core中,当你把实体添加到_Context后,必须调用SaveChanges()或await SaveChangesAsync(),数据库才会生成主键ID并赋值回你的实体对象。如果跳过这一步,实体的ID会保持默认值(比如0或者null,取决于你的ID类型)。

举个正确的示例(Razor Pages的OnPostAsync方法):

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

    // 添加新用户到上下文
    _context.Users.Add(NewUser);
    // 关键:保存到数据库,此时NewUser.Id会被赋值
    await _context.SaveChangesAsync();

    // 现在NewUser.Id已经是数据库生成的有效值了
    return RedirectToPage("./UserDetails", new { id = NewUser.Id });
}

如果是MVC控制器,逻辑类似:

public async Task<IActionResult> Create(UserCreateViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new User
        {
            Name = model.Name,
            Email = model.Email
            // 其他属性赋值
        };

        _context.Users.Add(user);
        await _context.SaveChangesAsync();

        // 跳转时直接传递已赋值的user.Id
        return RedirectToAction("Details", "User", new { id = user.Id });
    }

    return View(model);
}

第二步:检查视图中Model.Id的有效性

你提到用asp-route-id="Model.Id"没效果,首先要确认视图里的Model确实包含正确的ID值。可以在视图里临时加一行调试代码:

<!-- 在链接上方添加这行,查看ID是否正确 -->
<p>当前用户ID:@Model.Id</p>
<a asp-page="./UserDetails" asp-route-id="@Model.Id">查看用户详情</a>

如果这里显示的ID是0或空,说明传递给视图的Model本身就没有正确的ID——这时候要回头看控制器/页面模型的代码,是不是没有把保存后的用户实体传递给视图,而是传递了原来的输入ViewModel(这类ViewModel通常不会包含数据库生成的ID)。

第三步:避免直接返回View,改用跳转方法

如果在保存用户后直接返回View(比如return View(user)),虽然模型里有ID,但这种方式属于“服务器端渲染”,后续如果刷新页面可能导致重复提交。更规范的做法是用RedirectToAction(MVC)或RedirectToPage(Razor Pages),通过路由参数传递ID,这也能避免一些视图状态的问题。

额外排查点

  • ID类型问题:如果你的ID是Guid类型,确保传递时没有格式错误(EF Core会自动处理,但要确认SaveChanges后Guid已生成)。
  • 异步操作未等待:如果用了SaveChangesAsync(),一定要加await,否则代码会继续执行,此时ID还没被赋值。
  • Model绑定问题:如果视图用的是ViewModel,要确保ViewModel包含Id属性,并且你把保存后的用户ID赋值给了ViewModel的Id字段再传递给视图。

按照这些步骤排查,应该就能解决ID传递为空的问题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:57:31