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.cshtmlnew { id = user.Id }:传递刚创建用户的UserId作为路由参数new { area = "" }:强制指定区域为空,避免框架在当前的Identity区域内搜索页面
备选方案(相对路径写法)
如果你偏好使用相对路径,可以通过多级向上跳转定位到根Pages目录(不推荐,路径层级易混淆):
return RedirectToPage("../../../../Pages/ManageRoles", new { id = user.Id });
额外检查
- 确认
ManageRoles.cshtml的@page指令未自定义冲突的路由,默认@page即可匹配/ManageRoles路径 - 确保
ManageRoles.cshtml.cs的模型方法正确接收id参数,例如:
public async Task<IActionResult> OnGetAsync(string id) { // 处理接收的UserId逻辑... return Page(); }
内容的提问来源于stack exchange,提问作者Megan Paterson
相关产品推荐
相关产品推荐

