You need to enable JavaScript to run this app. .NET Core 中MVC视图使用asp-page跳转Razor Page异常问题
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 中MVC视图使用asp-page跳转Razor Page异常问题

问题根因
  • 出现这个现象的核心原因有两点:
    1. Razor Page锚点属性未被解析:MVC Razor视图默认仅加载MVC路由相关的Tag Helper,如果你没有引入Razor Page专属的Tag Helper程序集,asp-page会被当成无意义的自定义HTML属性,根本不会生成有效的href链接。此时浏览器对没有href属性的a标签的默认行为就是刷新当前页面,同时路径会按相对规则拼接成当前目录下的mypage地址,也就是你看到的/SiteFromWhichIRedirect/mypage跳转效果。
    2. 路由服务未启用:就算属性解析正常,如果应用没有在终端路由配置中显式启用Razor Pages的端点映射,系统也无法匹配到目标Razor Page,同样会出现跳转失败、刷新当前页的问题。
修复操作步骤
  • 第一步:确认路由配置合规
    在.NET 6+的Program.cs或旧版本的Startup.cs中,检查终端端点配置,保证Razor Pages的映射代码和MVC路由配置并列存在,对应代码为app.MapRazorPages(),不要遗漏这行配置。
  • 第二步:补全Tag Helper引用
    打开MVC视图目录下的全局引用文件Views/_ViewImports.cshtml,添加Razor Page的Tag Helper引入语句:
    @addTagHelper *, Microsoft.AspNetCore.Mvc.RazorPages
    配置完成后,当前目录下的所有MVC Razor视图就能正确识别asp-page、asp-page-handler等Razor Page专属的锚点属性了。
  • 第三步:按规范编写跳转标签
    写a标签时注意,asp-page的属性值要以斜杠开头,代表Razor Page应用根路径下的页面地址;如果需要携带参数,可以用asp-route-xxx的格式拼接路由参数,示例代码如下:
    <a asp-page="/mypage" asp-route-orderId="@Model.OrderId" asp-route-userName="@Model.UserName">跳转目标页面</a>
  • 传复杂模型的注意事项:如果需要传递整个复杂模型而非零散路由参数,不要直接把模型序列化拼到URL查询参数中,容易触发URL长度超限问题,可以通过表单POST提交、TempData缓存跨请求传值的方式实现跳转传参。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 09:15:02