2014-02-04 2 views
1

Я пытался найти простой способ выделить текущий выбранный пункт меню 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; 
} 

ответ

0

Я могу дать вам идею. В ModulesMenu_MenuItemDataBound сравнить item url и физический файл запроса с помощью следующего кода

Path.GetFileName(Request.PhysicalPath).ToUpper() 

Вы можете использовать можно сравнить как и установить selected css-class используя сравнение следующего

lstrMenuUrl.ToUpper().Replace(" ", "").Contains(filename.ToUpper()) 

где lstrMenuUrl является текущим меню, которое щелкнул.

Вот ссылка, которая может помочь вам

Highlight Selected Tab in ASP.Net Menu

0

я неправильно установлен атрибут .the атрибут для установки был

<Staticselectedstyle ForeColor="Red" Font-Bold="true" /> 

вместо

<DynamicSelectedStyle ForeColor="Red" Font-Bold="true" /> 
Смежные вопросы