顶部和子菜单中的当前链接

时间:2012-11-28 09:19:30

标签: umbraco

我试图设置一个"当前"在Umbraco安装中的顶级菜单项和子菜单项上的类。

Topmenu就像:

Home Products About Contact

现在,当我点击“产品”时,我将类名设置为" current"。同时它加载一个子菜单,如下所示:

Jeans
Sweeters
T-shirts
- Red
- Green
- Blue

当我点击让我们说Sweeters然后我不想产品链接和甜蜜链接到当前的类。我怎么能这样做?

topmenu的代码

@{
    <ul class="topnavigation">
    @foreach (var c in Model.AncestorOrSelf(2).Children.Where("umbracoNaviHide!=true"))
    {
        <li class="@(Model.Id == c.Id ? "current" : "")"><a href="@c.Url">@c.Name</a></li>
    }
    </ul>
}

子菜单代码

@{
<ul>
    @foreach (var page in @Model.AncestorOrSelf(3).Children)
    {
        string style = string.Empty;
        if (Model.Id == page.Id) { style = "class=current"; }
        <li @style><a href="@page.Url" @Html.Raw(style)>@page.Name</a></li>
            if (page.Childen != null && page.Children.Count() > 0 && Model.AncestorsOrSelf().Where("Id == @0", page.Id).Count() > 0)
            {                
                <ul>
                    @foreach (dynamic secondPage in page.Children.Where("!umbracoNaviHide"))
                    {    
                        string style1 = string.Empty;
                        if (Model.Id == secondPage.Id) { style1 = "class=current"; }                
                        <li @style1>
                            - <a href="@secondPage.Url">@secondPage.Name</a>
                        </li>
                    }
                </ul>
            }
    }
</ul>
}

1 个答案:

答案 0 :(得分:1)

页面具有Path属性,其中包含以逗号分隔的ID列表,代表页面的祖先。

您可以使用类似ID的内容检查当前页面Path属性中的产品页面@Model.Path.Contains(c.Id.ToString())是否存在。