我是 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
只是帮助您为页面定义自定义路由。所以, Razor 页面:
Edit
将具有路由模板/{Slug}/Edit
,其中Slug
是来自 URL 的参数。Delete
将具有路由模板/{Slug}/Delete
,其中Slug
是来自 URL 的参数。Details
将包含路由模板/{Slug?}
,其中Slug
是 URL 中的可选参数。您也可以使用/Index
转到该页面。Create
将具有路由模板/{Slug?}/Create
,其中Slug
是 URL 中的可选参数。
如果您删除它们,您的所有 razor 页面将仅使用默认约定,即以 Pages
文件夹作为根文件夹启动的文件夹基本约定。对于具有参数的页面,您应该将它们作为请求 URL 中的查询参数传递。例如,如果没有定义约定,如果您想转到 myValue
的 Edit
页面,则必须使用 /Edit?slug=myValue
元素。配置好约定后,URL 就很漂亮了,因为您将使用 /myValue/Edit
。
我认为您实际拥有的配置只是为了避免将 razor 页面的参数作为请求 URL 中的查询参数传递。
关于asp.net-core - Razor Pages 路由技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51051341/