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配置绝对路由模板(开头加斜杠/),覆盖默认的路径拼接逻辑:
- 修改
/Products/View.cshtml的@page:
@page "/Products/{id}/view"
- 修改
/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
相关产品推荐
相关产品推荐

