首页 > 解决方案 > 从覆盖页面到非覆盖页面的页面链接未正确生成

问题描述

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

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

在当前设置中,我们在 Pages/Theme 中有三个页面:

  1. 指数
  2. 关于
  3. 接触

以及 Pages/Overrides 中的两个页面:

  1. 指数
  2. 关于

我希望这些页面的行为:

这可以按我的意愿工作。
但是,使用锚标签助手在 Pages/Theme/Components/_Header 中创建的锚标签部分到 Pages/Theme 中的非覆盖页面不会创建正确的路由。
请参阅包含 _Header 组件的根/索引页面。关于页面链接生成正确,因为关于页面也在同一个文件夹中。但是,联系人页面链接似乎没有正确生成。仅当您位于“联系”页面本身时,此指向“联系”页面的链接才有效,因为它位于“页面/主题”中。锚标记的生成似乎没有考虑可以定位的位置视图。

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

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

[更新]
为了进一步澄清,请参阅下面的页面覆盖结构。asp-page标签助手找不到要为其创建路由的联系人页面。
注意:可以通过手动导航到“联系人页面/contactasp-page 标签助手找不到要为其创建路由的联系人页面

标签: c#asp.net-corerazor.net-corerazor-pages

解决方案


推荐阅读