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

.NET 7 Razor Pages路由问题:自定义URL与页面访问异常

.NET 7 Razor Pages URL配置问题解答

问题1:将Terms页面URL改为terms-and-conditions的正确配置

你之前的代码参数顺序搞反了,AddPageRoute的第一个参数是页面的实际路径(对应Pages文件夹下的文件路径,不含.cshtml),第二个参数是要添加的路由模板。以下是两种可行方案:

方案1:直接修改页面的@page指令(推荐)

在Terms.cshtml文件顶部修改@page指令,直接指定新路由:

@page "/terms-and-conditions"
@model TermsModel
<!-- 页面内容 -->

如果需要保留原/Terms路径作为备用访问地址,可以添加多个路由:

@page "/terms-and-conditions"
@page "/Terms"
@model TermsModel

方案2:通过服务配置路由约定

如果要在全局配置中修改,正确的代码写法如下:

builder.Services.AddRazorPages(options =>
{
    // 给Pages/Terms.cshtml页面添加terms-and-conditions路由
    options.Conventions.AddPageRoute("/Terms", "terms-and-conditions");
    // 若要禁用原/Terms路径,需添加以下代码移除默认路由
    options.Conventions.RemovePageRoute("/Terms", "");
});

问题2:页面改名为TermsAndConditions后无法访问的原因

Razor Pages默认启用**小写短横线分隔(Kebab Case)**的路由规则,所以当页面文件名为TermsAndConditions.cshtml时,默认的访问URL是/terms-and-conditions,而非/TermsAndConditions。

如果想使用PascalCase格式的URL,有两种解决方式:

  1. 在页面上直接指定路由:
@page "/TermsAndConditions"
@model TermsAndConditionsModel
  1. 全局关闭小写路由转换:
builder.Services.AddRazorPages(options =>
{
    options.Conventions.ConfigureFilter(new IgnoreRouteLowercaseTransformFilter());
});

内容的提问来源于stack exchange,提问作者K V Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:35:03