【问题标题】:Get ASPNET Core Razor Page name in _Layout file to update navigation items在 _Layout 文件中获取 ASPNET Core Razor 页面名称以更新导航项
【发布时间】:2018-04-16 17:26:11
【问题描述】:

使用 Bootstrap 4 并且需要将活动类添加到导航项以反映当前 Razor 页面(Core 2.0 中的新 razor 页面)。如何找出我在哪个页面/控制器上,以便将活动类名称添加到正确的位置:

<li><a class="active">...

谢谢。

更新: 我可以在我的页面初始化程序中使用以下代码解决这个问题:

@{
    var _action = this.Url.ActionContext.ActionDescriptor.DisplayName;
    var NavDashboard = "/abc";
    ...
}

然后我可以在每个导航项中添加“活动”类,例如:

<a asp-page="@NavDashboard" class="nav-link@(_action=="@NavDashboard" ? " active" : string.Empty)">Dashboard</a>

冲洗并重复每个导航项。

【问题讨论】:

  • 你有没有找到在布局文件中获取页面的方法?
  • 用解决方案更新了原帖。

标签: navigation bootstrap-4 asp.net-core-2.0 razor-pages


【解决方案1】:

我会使用 custom tag helper 将活动类添加到元素。

我 fork Ben Cull's ActiveRouteTagHelper for MVC 并将其修改为 Razor Pages 并将其命名为 ActivePageTagHelper。和他的用法类似,像这样:

<div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
        <li is-active-page asp-page="/Index"><a asp-page="/Index">Home</a></li>
        <li is-active-page asp-page="/About"><a asp-page="/About">About</a></li>
        <li is-active-page asp-page="/Contact"><a asp-page="/Contact">Contact</a></li>
    </ul>
</div>

【讨论】:

猜你喜欢
  • 2021-05-19
  • 2020-05-26
  • 2021-02-04
  • 2021-07-08
  • 1970-01-01
  • 2022-01-19
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多