【问题标题】:How to define permissible options in route segment in ASP.NET Core Razor Pages?如何在 ASP.NET Core Razor Pages 的路由段中定义允许的选项?
【发布时间】:2021-05-09 09:20:31
【问题描述】:

我有这些网址:

/entity/create
/entity/edit/6

我想将我的 Razor 页面限制为这两个 URL。

我使用@page 指令创建了这条路线:

@page "/companyInfo/{action}/{id?}";

而且它有效。但问题是它接受 {action}{id?} 段的所有类型的值。

我想在这条路线上应用这些限制:

  1. {actions} 应该只取 createedit 值之一
  2. {id} 不应存在于 create 中,而应存在于 edit 中。

换句话说,我想将我的 Razor Page 表单绑定到创建和编辑两种模式。

我该怎么办?

【问题讨论】:

  • 您为@page 编写的模式只是为了对路线数据提供更多约束(或使其更友好)。它总是映射到OnGetOnGetAsync 处理程序。我不太确定您如何为 2 个 URL 使用一个相同的剃须刀页面?如果您定义 2 个页面,则可以定义不同的模式(例如:第一个是 /companyInfo/edit/{id?},第二个是 /companyInfo/create - 这样您就不需要任何自定义约束)。请添加更多细节以使其清晰。

标签: asp.net-core url-routing razor-pages


【解决方案1】:

在您的 CompanyInfo 文件夹中创建一个名为 Crud 的页面,并将路由模板添加到带有前导 /@page 指令,以便它覆盖默认路由模板:

@page "/CompanyInfo/Create"

然后在Startup中使用AddPageRoute为页面定义一个额外的路由模板:

services.AddRazorPages().AddRazorPagesOptions(options =>
{
    options.Conventions.AddPageRoute("/CompanyInfo/Crud", "/CompanyInfo/Edit/{id:int}");
});

参考:https://www.learnrazorpages.com/razor-pages/routing#friendly-routes

【讨论】:

    猜你喜欢
    • 2022-07-14
    • 2018-02-17
    • 2020-10-27
    • 2020-06-27
    • 2019-07-05
    • 2020-02-19
    • 2019-11-29
    • 2020-05-06
    • 1970-01-01
    相关资源
    最近更新 更多