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

Asp.Net Core Razor Pages 友好URL生成不符合预期如何解决

Razor Pages友好URL格式错误解决方案

根因说明

你当前配置的@page路由模板为相对路径,Razor Pages默认会将页面对应的物理路径作为前缀和你自定义的路由模板拼接:

  • /Products/View.cshtml的默认物理路径为/Products/View,拼接你设置的"{id}/view"后,最终生效的路由规则为/Products/View/{id}/view,这就是生成的URL多了冗余路径段的原因。

解决方案1:修改页面@page指令(推荐,改动最小)

直接给两个页面的@page配置绝对路由模板(开头加斜杠/),覆盖默认的路径拼接逻辑:

  1. 修改/Products/View.cshtml的@page:
@page "/Products/{id}/view"
  1. 修改/Products/Process.cshtml的@page:
@page "/Products/{id}/process"

原有<a>标签代码无需调整,生成的URL即可符合products/100/view、products/100/process的预期格式。

解决方案2:全局配置路由约定

如果不想修改单个页面的@page指令,可在项目启动配置Program.cs中添加路由规则:

builder.Services.AddRazorPages()
    .AddRazorPagesOptions(options =>
    {
        // 给指定页面绑定自定义路由规则
        options.Conventions.AddPageRoute("/Products/View", "Products/{id}/view");
        options.Conventions.AddPageRoute("/Products/Process", "Products/{id}/process");
    });

该方案下原有页面代码和跳转标签代码都不需要改动,即可实现目标效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:36:02