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

.NET 6中RedirectToPage跳转URL重复编码问题排查

问题根源分析

出现URL重复编码的核心原因是**RedirectToPage的绝对路径调用与List页面的可选路由参数冲突**,或者框架在解析绝对路径时错误地将页面路径赋值给了page参数。当你调用RedirectToPage("/Admin/Links/List")时,Razor Pages框架可能误将完整路径当作page参数的值,导致生成/Admin/Links/List/%2FAdmin%2FLinks%2FList这样的错误URL。

解决方案

方案1:使用相对路径跳转

由于AddModel和ListModel处于同一个Admin/Links文件夹下,直接使用相对路径调用RedirectToPage即可避免路径解析错误:

// 替换原有的RedirectToPage调用
return RedirectToPage("List");

方案2:明确指定路由参数(强制不传递page参数)

如果必须使用绝对路径,可通过路由参数显式指定page为null,避免框架自动填充错误值:

return RedirectToPage("/Admin/Links/List", new { page = (int?)null });

方案3:直接使用URL重定向

绕过Razor Pages的页面解析逻辑,直接重定向到目标URL:

return Redirect("/Admin/Links/List");

额外排查点

  1. 检查List页面的@page路由模板,确保是@page "{page?}"(可选单个段参数),而非@page "{*page}"(通配符参数,会捕获完整路径)。
  2. 确认Pager类的定义中没有重写ToString()或其他可能干扰URL生成的方法,避免其属性值被错误注入到路由中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:26:59