ASP.NET меню кэширования?
В настоящее время я добавляю функциональность на веб-сайт, который использует веб-элемент управления Menu.
На веб-сайте есть разные роли, которые требуют различного набора параметров навигации в зависимости от этой роли. Для выполнения этой задачи я добавил функцию в код позади главной страницы, которая вызывается из Page_Load, которая принимает имя файла. (карта сайта) в качестве параметра и привязывает меню, содержащееся в HTML, к этому источнику.
Моя проблема в том, что когда я перехожу на страницу, которая не существует, а затем возвращаюсь, меню больше не появляется.
Кто-нибудь может дать мне какую-либо информацию по этой проблеме, например, почему она происходит и как ее решить, а также, кажется, что эта проблема возникает только в Internet Explorer 9 из Firefox, Opera и Chrome.
Мой текущий код следующий.
Menu menu = new Menu();
menu.Orientation = Orientation.Horizontal;
menu.StaticDisplayLevels = 2;
menu.MaximumDynamicDisplayLevels = 3;
menu.CssClass = "menu";
menu.EnableViewState = false;
//configure xmldatasource
XmlDataSource xmlDS = GetSiteMapDataSource(navigationPath);
xmlDS.XPath = "/*/*";
xmlDS.EnableCaching = false;
//configure menuitembinding
MenuItemBinding mib = new MenuItemBinding();
mib.DataMember = "siteMapNode";
mib.TextField = "title";
mib.NavigateUrlField = "url";
mib.ValueField = "title";
//configure datasource
menu.DataSource = xmlDS;
menu.DataBindings.Add(mib);
menu.DataBind();
//add to panel
NavigationPanel.Controls.Add(menu);
Это мой код, поскольку в настоящее время он не включает информацию, связанную с CSS, в настоящее время я пытаюсь использовать SiteMapDataSource, а не XMLDataSource, так как полагаю, что смогу использовать следующую информацию из моего файла веб-конфигурации для выбора источника данных.
<siteMap defaultProvider="guest">
<providers>
<add name="guest" type="System.Web.XmlSiteMapProvider" siteMapFile="~/App_Data/Guest.sitemap"/>
<add name="professional" type="System.Web.XmlSiteMapProvider" siteMapFile="~/App_Data/Professional.sitemap"/>
<add name="supplier" type="System.Web.XmlSiteMapProvider" siteMapFile="~/App_Data/Supplier.sitemap"/>
</providers>
</siteMap>
Спасибо,
Ric.
1 ответ
Код должен выполняться только тогда, когда нет обратной передачи.
If (!IsPostBack)
{
//Your code here!
}
В противном случае ваши элементы будут удалены.