从覆盖页面到非覆盖页面的页面链接无法正确生成

时间:2020-07-29 14:15:50

标签: c# asp.net-core razor .net-core razor-pages

我正在尝试通过将另一个具有相同名称的页面放置在“页面/覆盖”文件夹中来覆盖位于“页面/主题”中的现有“主题”页面。 我通过创建名为ThemeTemplatePageRouteModelConvention的PageRouteModelConvention做到了这一点。没有“ / Overrides /”路由前缀的“ Pages / Overrides”文件夹中的任何页面都可以访问,并且优先于“ Pages / Theme”文件夹中类似命名的视图。

在此处查看我的示例存储库:https://github.com/bryandh/razor-page-override

在当前设置中,“页面/主题”中有三页:

  1. 索引
  2. 关于
  3. 联系

以及“页面/替代”中的两页:

  1. 索引
  2. 关于

我希望这些页面具有的行为:

  • 索引页面,其中包含/ Pages / Overrides中使用的/路由
  • 关于“页面” /“替代”中使用的具有/ about路线的页面
  • 从/ Pages / Theme使用的具有/ contact路由的联系人页面

这可以按我希望的方式工作。
但是,使用锚标记帮助器在Pages / Theme / Components / _Header部分(而不是Pages / Theme中的非覆盖页面)中创建的锚标记无法创建正确的路由。
请参见包含_Header组件的根目录/索引页。关于页面链接也正确生成,因为关于页面也位于同一文件夹中。但是,“联系页面”链接似乎无法正确生成。仅当您位于“联系人”页面本身时,“联系人”页面的此链接才有效,因为它位于“页面/主题”中。 锚标记的生成似乎并没有考虑到可以将视图位置考虑在内的位置。

由于该链接位于我不想覆盖的组件中,因此无法修改asp-page属性来解决此问题。

如何让Header组件从覆盖的Index页面生成到Contact Theme页面的链接?

[UPDATE]
为了进一步说明,请参见下面的页面覆盖结构。 asp-page标签帮助程序无法找到“联系人”页面来为其创建路线。
注意:通过手动导航到/contact,可以访问“联系人”页面 asp-page tag helper can't find Contact page to create a route for

0 个答案:

没有答案