我使用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 – 2012-03-15 18:14:20