.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,有两种解决方式:
- 在页面上直接指定路由:
@page "/TermsAndConditions" @model TermsAndConditionsModel
- 全局关闭小写路由转换:
builder.Services.AddRazorPages(options => { options.Conventions.ConfigureFilter(new IgnoreRouteLowercaseTransformFilter()); });
内容的提问来源于stack exchange,提问作者K V Sharma
相关产品推荐
相关产品推荐

