Я использую System.Web.UI.WebControls.Menu для создания и представления пользовательского меню. Загрузка меню требует значительных операций с базой данных и занимает около 1,4 секунды, поэтому я ищу способы кэширования меню в очереди страниц. Если я сохраняю SessionVariable [«ThisMenu»], который содержит элемент управления меню, значение ThisMenu корректно отображается на поворотах страницы; однако я не могу установить фактический контроль на странице успешно.Кэширование ASP.NET Управление меню
Если я пытаюсь этот код, он компилирует и выполняет, но ничего не появляется в выводе HTML:
System.Web.UI.WebControls.Menu ctlMasterMenu = (System.Web.UI.WebControls.Menu)GetControl("ctlMasterMenu");
if (ctlMasterMenu != null)
{
if (ThisMenu != null)
{
ctlMasterMenu = ThisMenu;
}
else
{
LoadPageMenu((System.Web.UI.WebControls.Menu)ctlMasterMenu); // Sets ThisMenu
}
}
If I try this code, it executes, but as it adds a MenuItem to ctlMasterMenu, it removes the item from ThisMenu. The result is that after a few page turns, the menu is empty.
System.Web.UI.WebControls.Menu ctlMasterMenu = (System.Web.UI.WebControls.Menu)GetControl("ctlMasterMenu");
if (ctlMasterMenu != null)
{
if (ThisMenu != null)
{
List<MenuItem> items = new List<MenuItem>();
for (int i = 0; i < ThisMenu.Items.Count; i++)
{
items.Add(ThisMenu.Items[i]);
}
ctlMasterMenu.Items.Clear();
foreach (MenuItem item in items)
{
ctlMasterMenu.Items.Add(item); // Causes item to be removed from ThisMenu
}
}
else
{
LoadPageMenu((System.Web.UI.WebControls.Menu)ctlMasterMenu);
}
}
Там должен быть простой способ, который работает.
Это .NET, а не классический ASP –