Я пытался найти простой способ выделить текущий выбранный пункт меню asp.net (чтобы пользователь знал, на какой странице они находятся), но независимо от того, что я пытался, я не могу его получить работать. В моей разметке у меня есть:Как выделить динамически загруженный пункт меню на C#?
<asp:Menu SkinID="modulesMenu" DataSourceID="modulesSource" runat="server" ID="ModulesMenu"
OnMenuItemDataBound="ModulesMenu_MenuItemDataBound">
<StaticItemTemplate>
<div>
<asp:HyperLink ID="HyperLink2" CssClass="moduleName"
NavigateUrl='<%# ((MenuItem)Container.DataItem).NavigateUrl %>'
Text='<%# ((MenuItem)Container.DataItem).Text %>' runat="server" />
</div>
</StaticItemTemplate>
<DynamicSelectedStyle ForeColor="Red" Font-Bold="true" />
</asp:Menu>
Это C# код, используемые для идентификации выбранного элемента
protected void ModulesMenu_MenuItemDataBound(object sender, MenuEventArgs e)
{
SiteMapNode siteMapNode = (SiteMapNode)e.Item.DataItem;
string pathStringFormat = IsNodeActive(siteMapNode) ? ConfigurationManager.AppSettings["ModuleImagePathFormatString_Active"] : ConfigurationManager.AppSettings["ModuleImagePathFormatString_Inactive"];
e.Item.ImageUrl = String.Format(pathStringFormat, siteMapNode["imageName"]);
if (IsNodeActive(siteMapNode))
{
e.Item.Selected = true;
}
}
private bool IsNodeActive(SiteMapNode siteMapNode)
{
if (SiteMap.CurrentNode != null)
{
return (SiteMap.CurrentNode.Equals(siteMapNode) || SiteMap.CurrentNode.IsDescendantOf(siteMapNode));
}
return false;
}