剃刀页面路由技术

时间:2018-06-26 21:04:11

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

我是剃刀页面的新手(用于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

只是出于好奇,如果我不指定这样的路由会发生什么?

1 个答案:

答案 0 :(得分:1)

方法options.Conventions.AddPageRoute仅帮助您为页面定义自定义路由。因此,剃须刀页面:

  1. Edit将具有路由模板/{Slug}/Edit,其中Slug是URL中的参数。
  2. Delete将具有路由模板/{Slug}/Delete,其中Slug是URL中的参数。
  3. Details将具有路由模板/{Slug?},其中Slug是URL中的可选参数。您也可以使用/Index转到该页面。
  4. Create将具有路由模板/{Slug?}/Create,其中Slug是URL中的可选参数。

如果删除它们,所有的剃须刀页面将仅使用defaut约定,该约定是从Pages文件夹开始的文件夹基本约定作为根文件夹。对于具有参数的页面,您应该在请求URL中将它们作为查询参数传递。例如,如果未定义约定,则要转到/Edit?slug=myValue项的Edit页,必须使用myValue。配置了约定后,URL很漂亮,因为您将使用/myValue/Edit

我认为您实际具有的配置只是为了避免在请求URL中将剃刀页面的参数作为查询参数传递。