У меня есть следующий элемент управления меню, встроенный в файл 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 selected, я использую следующий код 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 #, чтобы помочь родительскому меню сохранить свой атрибут «selected» класса CSS. Я не уверен, нужен ли мне для этой цели файл Web.sitemap? Родительская и дочерняя логика доступна только в файле Web.sitemap.