我试图设置一个"当前"在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>
}
答案 0 :(得分:1)
页面具有Path
属性,其中包含以逗号分隔的ID
列表,代表页面的祖先。
您可以使用类似ID
的内容检查当前页面Path
属性中的产品页面@Model.Path.Contains(c.Id.ToString())
是否存在。