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

Posted

技术标签:

【中文标题】如何匹配 Razor Pages 中的多个路由?【英文标题】:How to match multiple routes in Razor Pages? 【发布时间】:2022-01-07 19:41:39 【问题描述】:

我需要为两个不同的 URL 显示一个表单:

/customer/edit/15

/customer/edit/sales/john

我想为他们两个显示相同的表格。要么提供客户 ID,要么提供部门名称和员工姓名。

如何在我的页面路由中实现这一点?

我已经有了这个:

@page /customer/action/id?:long

【问题讨论】:

【参考方案1】:

您可以尝试使用options.Conventions.AddPageRoute。 这是一个演示:

页面/客户/Edit.cshtml

@page "/customer/edit/id:long"
@model RazorPageDemo.Pages.Customer.EditModel
@

<h1>edit</h1>

Startup.cs:

public void ConfigureServices(IServiceCollection services)
        
            ...
            services
            .AddRazorPages()
            .AddRazorPagesOptions(options =>
            
               
                options.Conventions.AddPageRoute("/customer/edit", "/customer/edit/department/employee");
               
            );
            
        

结果:

【讨论】:

以上是关于如何匹配 Razor Pages 中的多个路由?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

如何从 Razor Pages 应用程序中的插件动态加载页面?