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

ASP.NET Razor Pages中从Identity注册页跳转至ManageRoles页的问题

解决Razor Pages中跨区域跳转至指定页面的问题

问题原因

你的注册页面位于Areas/Identity/Pages/Account目录下,使用./ManageRoles会让框架在当前Account目录下查找页面,而目标页面ManageRoles.cshtml在根目录的Pages文件夹中,路径匹配自然失败。同时,当前处于Identity区域,框架默认会在该区域内搜索页面,这也是导致错误的关键。

解决方案

使用RedirectToPage时,明确指定根路径的页面名称,并设置区域为空,确保框架定位到正确的页面:

正确代码示例

在Register.cshtml.cs的OnPostAsync方法中,替换跳转代码为:

if (result.Succeeded)
{
    // 省略用户创建等逻辑...
    return RedirectToPage("/ManageRoles", new { id = user.Id }, new { area = "" });
}

参数说明

  • /ManageRoles:以/开头表示从应用根目录的Pages文件夹开始查找页面,对应~/Pages/ManageRoles.cshtml
  • new { id = user.Id }:传递刚创建用户的UserId作为路由参数
  • new { area = "" }:强制指定区域为空,避免框架在当前的Identity区域内搜索页面

备选方案(相对路径写法)

如果你偏好使用相对路径,可以通过多级向上跳转定位到根Pages目录(不推荐,路径层级易混淆):

return RedirectToPage("../../../../Pages/ManageRoles", new { id = user.Id });

额外检查

  1. 确认ManageRoles.cshtml的@page指令未自定义冲突的路由,默认@page即可匹配/ManageRoles路径
  2. 确保ManageRoles.cshtml.cs的模型方法正确接收id参数,例如:
public async Task<IActionResult> OnGetAsync(string id)
{
    // 处理接收的UserId逻辑...
    return Page();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:10:26