我在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;
}
}
}
上面的代码效果很好。但是,这些页面现在包含子页面(子页面),我希望父页面在访问其子页面之一时保留其“已选择” CSS 属性。
我还创建了Web.sitemap文件来组织所有父页面和它们的子页面。但是,我对如何使用 Web.sitemap 来帮助上面的 C# 函数帮助父菜单保留其 CSS 类“选定”属性感到很感兴趣。我不确定是否为此需要 Web.sitemap 文件?父子逻辑仅在 Web.sitemap 文件中可用。