我是剃刀页面的新手(用于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
只是出于好奇,如果我不指定这样的路由会发生什么?
答案 0 :(得分:1)
方法options.Conventions.AddPageRoute
仅帮助您为页面定义自定义路由。因此,剃须刀页面:
Edit
将具有路由模板/{Slug}/Edit
,其中Slug
是URL中的参数。Delete
将具有路由模板/{Slug}/Delete
,其中Slug
是URL中的参数。Details
将具有路由模板/{Slug?}
,其中Slug
是URL中的可选参数。您也可以使用/Index
转到该页面。 Create
将具有路由模板/{Slug?}/Create
,其中Slug
是URL中的可选参数。如果删除它们,所有的剃须刀页面将仅使用defaut约定,该约定是从Pages
文件夹开始的文件夹基本约定作为根文件夹。对于具有参数的页面,您应该在请求URL中将它们作为查询参数传递。例如,如果未定义约定,则要转到/Edit?slug=myValue
项的Edit
页,必须使用myValue
。配置了约定后,URL很漂亮,因为您将使用/myValue/Edit
。
我认为您实际具有的配置只是为了避免在请求URL中将剃刀页面的参数作为查询参数传递。