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で、Classic ASPではありません –