Razor Pages 路由技术
Razor Pages routing techniques
我是 razor 页面的新手(习惯了 MVC 模式)。我在 GitHub:
上发现了一些有趣的路由模式
services.AddMvc()
.AddViewLocalization()
.AddDataAnnotationsLocalization()
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Edit", "/{Slug}/Edit");
options.Conventions.AddPageRoute("/Delete", "{Slug}/Delete");
options.Conventions.AddPageRoute("/Details", "{Slug?}");
options.Conventions.AddPageRoute("/Details", @"Index");
options.Conventions.AddPageRoute("/Create", "{Slug?}/Create");
});
在某些项目中,我没有看到 AddRazorPagesOption
出于好奇,如果我不这样指定路由会怎样?
方法options.Conventions.AddPageRoute
只是帮助您为页面定义自定义路由。所以,剃刀页面:
Edit
将具有路由模板 /{Slug}/Edit
,其中 Slug
是来自 URL. 的参数
Delete
将具有路由模板 /{Slug}/Delete
,其中 Slug
是来自 URL. 的参数
Details
将具有路由模板 /{Slug?}
,其中 Slug
是来自 URL 的 可选 参数。您也可以使用 /Index
转到该页面。
Create
将具有路由模板 /{Slug?}/Create
,其中 Slug
是来自 URL. 的可选参数
如果您删除它们,您的所有剃须刀页面将只使用默认约定,即文件夹基本约定以 Pages
文件夹作为根文件夹开始。对于具有参数的页面,您应该在请求中将它们作为查询参数传递 URL。例如,如果没有定义约定,如果您想转到 myValue
项目的 Edit
页面,则必须使用 /Edit?slug=myValue
。配置约定后,URL 很漂亮,因为您将使用 /myValue/Edit
.
我认为您实际拥有的配置只是为了避免将剃刀页面的参数作为请求中的查询参数传递 URL。
我是 razor 页面的新手(习惯了 MVC 模式)。我在 GitHub:
上发现了一些有趣的路由模式services.AddMvc()
.AddViewLocalization()
.AddDataAnnotationsLocalization()
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Edit", "/{Slug}/Edit");
options.Conventions.AddPageRoute("/Delete", "{Slug}/Delete");
options.Conventions.AddPageRoute("/Details", "{Slug?}");
options.Conventions.AddPageRoute("/Details", @"Index");
options.Conventions.AddPageRoute("/Create", "{Slug?}/Create");
});
在某些项目中,我没有看到 AddRazorPagesOption
出于好奇,如果我不这样指定路由会怎样?
方法options.Conventions.AddPageRoute
只是帮助您为页面定义自定义路由。所以,剃刀页面:
Edit
将具有路由模板/{Slug}/Edit
,其中Slug
是来自 URL. 的参数
Delete
将具有路由模板/{Slug}/Delete
,其中Slug
是来自 URL. 的参数
Details
将具有路由模板/{Slug?}
,其中Slug
是来自 URL 的 可选 参数。您也可以使用/Index
转到该页面。Create
将具有路由模板/{Slug?}/Create
,其中Slug
是来自 URL. 的可选参数
如果您删除它们,您的所有剃须刀页面将只使用默认约定,即文件夹基本约定以 Pages
文件夹作为根文件夹开始。对于具有参数的页面,您应该在请求中将它们作为查询参数传递 URL。例如,如果没有定义约定,如果您想转到 myValue
项目的 Edit
页面,则必须使用 /Edit?slug=myValue
。配置约定后,URL 很漂亮,因为您将使用 /myValue/Edit
.
我认为您实际拥有的配置只是为了避免将剃刀页面的参数作为请求中的查询参数传递 URL。