首页 > 解决方案 > Razor Pages 链接基于当前页面错误呈现

问题描述

我的_Layout.cshtml文件中有一个带有以下标记的 Razor Pages 应用程序。

<li class="nav-item dropdown">
    <a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        Reports
    </a>
    <div class="dropdown-menu" aria-labelledby="navbarDropdown">
        <a class="dropdown-item" asp-area="Reports" asp-page="/Invoice/Index">Invoices</a>
        <div class="dropdown-divider"></div>
        <a class="dropdown-item" asp-area="Reports" asp-page="/ProfitabilityByCustomer/Index">Profitability by Customer</a>
        <a class="dropdown-item" asp-area="Reports" asp-page="/ProfitabilityByLocation/Index">Profitability by Location</a>
        <a class="dropdown-item" asp-area="Reports" asp-page="/CostAudit/Index">Cost Audit</a>
        <a class="dropdown-item" asp-area="Reports" asp-page="/ChangeLogs/Index">Change Logs</a>
    </div>
</li>

注意最后一个链接(到/ChangeLogs/Index)。此页面有一个页面路由 ( @page "{id?}")。

当我手动导航到/Reports/ChangeLogs/61时,上面的标记呈现为:

<li class="nav-item dropdown">
    <a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        Reports
    </a>
    <div class="dropdown-menu" aria-labelledby="navbarDropdown">
        <a class="dropdown-item" href="/Reports/Invoice">Invoices</a>
        <div class="dropdown-divider"></div>
        <a class="dropdown-item" href="/Reports/ProfitabilityByCustomer">Profitability by Customer</a>
        <a class="dropdown-item" href="/Reports/ProfitabilityByLocation">Profitability by Location</a>
        <a class="dropdown-item" href="/Reports/CostAudit">Cost Audit</a>
        <a class="dropdown-item" href="/Reports/ChangeLogs/61">Change Logs</a>
    </div>
</li>

不知何故,当前页面是/Reports/ChangeLogs/61的事实导致菜单中的链接使用此路由值呈现!

我无法解释这一点。我需要阻止它发生。

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

解决方案


如果没有指定,路由将从当前页面继承值。所以指定一个空白值;

<a class="dropdown-item" asp-area="Reports" asp-page="/ChangeLogs/Index" asp-route-id="">Change Logs</a>

推荐阅读