使用 Razor Pages 在路由中间定义所需的路径参数?

Posted

技术标签:

【中文标题】使用 Razor Pages 在路由中间定义所需的路径参数?【英文标题】:Define a required path parameter in the middle of a route using Razor Pages? 【发布时间】:2021-09-19 12:39:19 【问题描述】:

在 Razor 页面中,我有以下文件夹结构:

区域 人 人 Jobs.cshtml Index.cshtml

Index.cshtml 页面需要将人员的 ID 作为路径参数包含在内。我在 cshtml 文件中定义了必要的 @page 指令。网址如下所示:

www.website.com/people/person/24

如何使用@page 指令将 Jobs 页面定义为以下路由?

www.website.com/people/person/24/jobs

换句话说,我怎么能做这样的事情,其中​​ pageName 解析为“工作”

@page "personId/page"

使用保留的 page 路由模板最终会返回一个编码路由,而不仅仅是页面名称:

24/%2FPerson%2F/Jobs

【问题讨论】:

【参考方案1】:

您可以应用一个路由模板来覆盖路由系统生成的默认模板,方法是在其前面加上正斜杠/

@page "/people/person/personId:int/jobs"

请看这里:https://www.learnrazorpages.com/razor-pages/routing#override-routes

顺便说一句,我会完全避免在 Razor Pages 应用程序中使用区域。您只需将子文件夹添加到 Pages 文件夹即可获得相同的路由优势,而不会增加区域的额外复杂性。

【讨论】:

以上是关于使用 Razor Pages 在路由中间定义所需的路径参数?的主要内容,如果未能解决你的问题,请参考以下文章

Razor 页面路由到默认页面的问题

ASP.NET Razor Pages 路由参数命名页面

如何匹配 Razor Pages 中的多个路由?

ASP.NET Core 2.2 Razor 页面中的自定义路由

带有 id 的 asp.net core 2 razor pages 路由

ASP.NET Core Razor Pages 强制 Anchor Tag Helper (asp-page) 使用小写路由