Я думаю, что вы должны установить выбранный элемент на MenuItemDataBound событии (адаптировать свой код):
protected void Menu1_MenuItemDataBound(object sender, MenuEventArgs e)
{
if (SiteMap.CurrentNode != null)
{
if (e.Item.Text == SiteMap.CurrentNode.Title)
{
e.Item.Selected = true;
}
}
}
Более содержания, которое показывает, как обрабатывать ссылки в меню, которое имеет в качестве источника данных карты сайта ...
Чтобы иметь ссылку меню, построенную из Web.sitemap открыть в новом окне ...
в aSP.NET странице добавить OnMenuItemDataBound события:
<asp:Menu ID="mnuFooter" runat="server"
DataSourceID="SiteMapDataSource1"
OnMenuItemDataBound="mnuFooter_MenuItemDataBound">
</asp:Menu>
В web.sitemap добавьте? символ в URL:
В коде позади, захватить событие MenuItemDataBound:
protected void mnuFooter_MenuItemDataBound(Object sender, MenuEventArgs e)
{
if (e.Item.NavigateUrl.Contains("?"))
{
e.Item.Target = "_blank";
}
}
Любой URL в Web.sitemap, который содержит? откроется в новом окне. Обратите внимание, что вместо символа? если необходимо.
ASP.NET Menu Control Overview
В каком методе вы вызываете код, который вы указали выше? Возможно, вы звоните, прежде чем меню будет заполнено. –
Код находится в режиме page_load из Home.aspx. Возможно, потому что меню привязано к sitemapdatasource, что оно еще не заселено. Я подумал об этом. Люди должны работать, но я ничего не могу найти. Я попытаюсь установить элементы без источника данных - посмотрим, как это влияет на вещи. – BillB
Yup, я установил элементы в дизайнере, и они там в page_load.Значит, вы не можете это сделать, если меню связано? Возможно, что-то в объекте sitemap ... (Эти элементы управления больше работают, чем просто изучают javascript.) – BillB