【问题标题】:Razor Pages routing techniquesRazor Pages 路由技术
【发布时间】:2018-12-05 16:10:47
【问题描述】:

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

出于好奇,如果我不这样指定路由会怎样?

【问题讨论】:

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


    【解决方案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 中的可选参数。

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

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

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 2019-07-05
      • 2020-03-24
      • 2019-01-29
      • 2019-03-25
      • 2018-02-17
      • 2018-07-07
      • 2019-07-27
      • 2022-01-07
      相关资源
      最近更新 更多