我在 Site.master 文件中嵌入了以下菜单控件:
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" RenderingMode="List">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home" />
<asp:MenuItem NavigateUrl="~/TechServices.aspx" Text="Tech Services"/>
<asp:MenuItem NavigateUrl="~/HumanResources.aspx" Text="Human Resources"/>
<asp:MenuItem NavigateUrl="~/Marketing.aspx" Text="Marketing"/>
<asp:MenuItem NavigateUrl="~/DocumentControl.aspx" Text="Document Control"/>
<asp:MenuItem NavigateUrl="~/IT.aspx" Text="Information Tech"/>
</Items>
</asp:Menu>
为了设置CSS类属性 选择 ,我使用以下C#代码:
protected void Page_Load(object sender, EventArgs e) {
string thispage = this.Page.AppRelativeVirtualPath;
int slashpos = thispage.LastIndexOf('/');
string pagename = thispage.Substring(slashpos + 1);
foreach (MenuItem mi in NavigationMenu.Items) {
if (mi.NavigateUrl.Contains(pagename)) {
mi.Selected = true;
break;
}
}
}
上面的代码效果很好。但是,这些页面现在包含子页面(子),我希望父页面在访问其子页面时保留“Selected” CSS属性。
我还创建了 Web.sitemap 文件来整理所有父页面及其子页面。但是,我有关如何使用Web.sitemap来帮助上面的C#函数来帮助父菜单保留其CSS类“selected”属性。我不确定我是否需要Web.sitemap文件用于此目的?父和子逻辑仅在Web.sitemap文件中可用。
答案 0 :(得分:0)
一旦找到要选择的MenuItem,只需向上移动并选择所有父级。这是一些伪代码:
MenuItem miP = mi.Parent;
while (miP != null)
{
miP.Selected = true;
if (miP.Parent == null)
break;
else
miP = miP.Parent;
}