Обычно мы используем стандартную группу UL в обычном HTML, которую предоставляет дизайнер, а затем превращаем их в теги HTML-сервера.
Могут быть и другие решения, но мы обычно делаем следующее решение.
Сначала каждому пункту меню верхнего уровня требуется идентификатор.
Если меню находится на главной странице (я предполагаю, что это так)
в коде главной страницы вы можете разместить код, подобный этому.
//Discover currently navigated page TYPE
if (this.Page is `pagetype of the current page`)
//add a CSS class to the top level menu item
miFirstMenuItem.Attributes["class"] += " highlightedMenuItemCSSClass";
Тогда HTML-вывод добавит дополнительный класс CSS к этому пункту меню, к которому вы примените свой конкретный стиль
Вот пример из реальной жизни
Узел вы должны изменить тип в методе SetActiveTab на правильный тип для MenuItem
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
bool homeVisited = Page is Default;
bool productsVisited = Page is Products_List;
bool demoVisited = Page is Demonstrations;
bool contactVisited = Page is Contact;
if (homeVisited)
SetActivePage(hlHome, ButtonSide.Left);
if (productsVisited)
SetActivePage(hlProducts, ButtonSide.Middle);
if (demoVisited)
SetActivePage(hlDemo, ButtonSide.Middle);
if (contactVisited)
SetActivePage(hlContact, ButtonSide.Right);
}
}
Это показывает другой способ, чем я описал выше, но вы можете заменить его на link.Attributes ["class"] + = "cssClass"; Обратите внимание на пробел после первого ".
Также ButtonSide - это перечисление, которое я добавил, поскольку все средние элементы меню будут иметь одинаковый класс CSS в моем конкретном случае, а также левый и правый.
private void SetActivePage(HyperLink link, ButtonSide side)
{
if (side == ButtonSide.Left)
link.CssClass = "currentleft";
if (side == ButtonSide.Middle)
link.CssClass = "currentmiddle";
if (side == ButtonSide.Right)
link.CssClass = "currentright";
}