我在页面上有两个ASP.NET Menu控件。
我的标题(标签)中有一个用于顶级页面,例如~/Default.aspx
我的侧边栏中有一个子页面,例如~/Products/SomeProduct.aspx
我正在使用selected
CSS类来确保所选标签的颜色不同。
适用于顶级页面,但如果我查看子页面,则不会为该选项卡分配selected
的CSS类。
在查看子页面时,如何确保顶级菜单项的CSS类为selected
?
答案 0 :(得分:1)
借助相关问题找出答案:
Set item.selected in ASP.NET Menu Control
protected void Page_Load(object sender, EventArgs e)
{
MenuControl.MenuItemDataBound += new MenuEventHandler(MenuControl_MenuItemDataBound);
}
void MenuControl_MenuItemDataBound(object sender, MenuEventArgs e)
{
if (SiteMap.CurrentNode != null)
{
if (SiteMap.CurrentNode.ParentNode.Url == e.Item.NavigateUrl)
{
e.Item.Selected = true;
}
}
}
答案 1 :(得分:0)
我的菜单没有数据绑定,所以从不触发MenuItemDataBound。以下是我的解决方案,以在有子项和没有子项时突出显示父菜单项:
向菜单中添加StaticSelectedStyle-xxx,例如StaticSelectedStyle-BackColor="#757588"
在Page_Load上调用此方法:
protected void SetSelectedMenuItem()
{
string pageViewed = this.Page.AppRelativeVirtualPath;
foreach (MenuItem item in Menu.Items)
{
if (item.ChildItems.Count > 0)
{
if (pageViewed == item.Value)
{
item.Selected = true;
}
else
{
foreach (MenuItem childItem in item.ChildItems)
{
if (pageViewed == childItem.Value)
{
if (childItem.Parent != null)
{
childItem.Parent.Selected = true;
}
}
}
}
}
else
{
if (pageViewed == item.Value)
{
item.Selected = true;
}
}
}
}