ASP.NET Core 使用 ViewComponent 跟踪侧边栏的活动页面

豺狼

这是我的侧边栏视图组件的默认视图

                <li class="nav-header text-center pb-1 text-white"><strong>Menu de Navegação</strong></li>

                @foreach (var item in Model.Items)
                {
                    <li class="nav-item has-treeview">

                        <a href="@item.Url" class="nav-link custom-sidebar-link">
                            @Html.Raw(@item.Icon)
                            <p class="text-white">
                                @item.Nome
                                @if (item.SubItems != null)
                                {
                                    <i class="fas fa-angle-left right"></i>
                                }
                            </p>
                        </a>
                        @if (item.SubItems != null)
                        {
                            <ul class="nav nav-treeview">
                                @foreach (var subItem in item.SubItems)
                                {
                                    <li class="nav-item">
                                        <a href="@subItem.Url" class="nav-link">
                                            @Html.Raw(@subItem.Icon)
                                            <p>
                                                @subItem.Nome
                                            </p>
                                        </a>
                                    </li>
                                }
                            </ul>
                        }
                    </li>
                }
            </ul>
        </nav>

这是cs文件

public class SidebarAdminViewComponent : ViewComponent
{
    public IViewComponentResult Invoke()
    {
        var claims = Request.HttpContext.User.Claims;
        var role = claims.FirstOrDefault(c => c.Type == ClaimTypes.Role)?.Value; ;


        var Sidebar = new SidebarViewModel();

        Sidebar.Items = new List<SidebarItemViewModel>();

        Sidebar.Items.Add(new SidebarItemViewModel
        {
            Nome = "Home",
            Icon = "<i class='nav-icon fas fa-house'></i>",
            Url = Url.Page("/Account/Home/Index")
        });

        Sidebar.Items.Add(sidebarItem);



        return View(Sidebar);
    }
}

如您所见,我的代码中没有任何内容可以设置活动类。那是因为我现在用 javascript 处理了

$(function () {
    var url = window.location;

    // Adds active on inner anchor and treeview anchor and treeview menu-open state to li
    $('ul.nav a').filter(function () {
        return this.href == url;
    }).addClass('active').parent().parent().siblings().addClass('active').parent().addClass('menu-open');

});

我希望能够仅使用 C# 来执行此操作,但我不知道如何检测用户所在的当前页面。

霍沙尼

您要做的是从视图中获取当前页面名称并在您拥有的循环内添加比较(所有在视图内)

                <li class="nav-header text-center pb-1 text-white"><strong>Menu de Navegação</strong></li>

                @foreach (var item in Model.Items)
                {
                    @* here for the parent menu item*@
                    <li class=@(ViewContext.RouteData.Values["Controller"].ToString().ToLower() == item.Name.ToLower() ? "nav-item has-treeview active" : "nav-item has-treeview">

                        <a href="@item.Url" class="nav-link custom-sidebar-link">
                            @Html.Raw(@item.Icon)
                            <p class="text-white">
                                @item.Nome
                                @if (item.SubItems != null)
                                {
                                    <i class="fas fa-angle-left right"></i>
                                }
                            </p>
                        </a>
                        @if (item.SubItems != null)
                        {
                            <ul class="nav nav-treeview">
                                @foreach (var subItem in item.SubItems)
                                {
                                    @* here for the child menu item*@
                                    <li class=@(ViewContext.RouteData.Values["Action"].ToString().ToLower() == item.Url.Split('/').Last().ToLower() ? "nav-item active" : "nav-item">
                                        <a href="@subItem.Url" class="nav-link">
                                            @Html.Raw(@subItem.Icon)
                                            <p>
                                                @subItem.Nome
                                            </p>
                                        </a>
                                    </li>
                                }
                            </ul>
                        }
                    </li>
                }
            </ul>
        </nav>

我已经使用了,.ToString().ToLower()因为我在发布之前正在测试,您可能不需要它们

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法识别ASP.NET Core ViewComponent的Invoke()方法调用

来自分类Dev

asp.Net Core ViewComponent不显示CSS

来自分类Dev

Asp.Net Core将ViewComponent渲染为变量

来自分类Dev

在ASP.Net Core MVC视图中刷新ViewComponent

来自分类Dev

Asp.net Core - 如何从 javascript 为 ViewComponent 调用异步?

来自分类Dev

从ASP.NET Core中的ViewComponent提交表单并执行控制器操作

来自分类Dev

如何在ViewComponent Asp.Net Core中获取当前的登录用户

来自分类Dev

ASP.NET MVC 4中的ViewComponent

来自分类Dev

在 ViewComponent 中重定向到 asp.net 核心标识中的登录页面

来自分类Dev

在Bootstrap模态.NET Core 3.1 C#中返回ViewComponent

来自分类Dev

如何从ASP.NET MVC中的View调用ViewComponent?

来自分类Dev

ASP.NET Core是否仍使用OWIN?

来自分类Dev

在ASP.NET Core中使用MimeMapping

来自分类Dev

在ASP.net Core中使用BeginCollectionItem

来自分类Dev

在ASP.NET Core中使用DirectoryServices

来自分类Dev

使用设置配置ASP.NET Core

来自分类Dev

ASP NET Core服务特定的html页面

来自分类Dev

使用Cookie的ASP.NET Core .NET Framework测试

来自分类Dev

ASP .NET Core 3.0剃刀页面使用@ Url.Page为AJAX生成动态href网址

来自分类Dev

在ASP.Net Core Razor页面中使用会话包装器

来自分类Dev

Angular 4 应用程序接收 ViewComponent ASP.Core 服务器响应

来自分类Dev

使用javascript调用ViewComponent

来自分类Dev

ASP.NET Core - 无法跟踪实体类型的实例

来自分类Dev

在ASP.NET Core 1.0中使用SignalR

来自分类Dev

在ASP.NET Core中使用远程验证

来自分类Dev

使用Web API的ASP.Net Core路由

来自分类Dev

使用ASP.NET Core计算SHA1

来自分类常见问题

使用VSTS的ASP.NET Core Web API的CI / CD

来自分类Dev

在ASP.NET Core中使用NumberFormat属性

Related 相关文章

热门标签

归档