【问题标题】:Razor Pages link is mis-rendering based on the current pageRazor Pages 链接基于当前页面错误呈现
【发布时间】:2020-11-20 17:46:48
【问题描述】:

我的 _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.net asp.net-core .net-core razor-pages


    【解决方案1】:

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

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

    【讨论】:

    • 是的,解决了它。但我仍然不确定它为什么要继承它们。我认为没有充分的理由。
    猜你喜欢
    • 1970-01-01
    • 2014-02-10
    • 2021-02-06
    • 2017-02-18
    • 2021-01-09
    • 2014-04-18
    • 2012-05-12
    • 2013-05-18
    • 2022-01-20
    相关资源
    最近更新 更多