ASPX:
<asp:Menu id ="menuBar" runat="server" Orientation="Horizontal"
IncludeStyleBlock="false">
<item>
<asp:MenuItem Text="Home"></asp:MenuItem>
<asp:MenuItem Text="Folio">
<asp:MenuItem Text="Nature" NavigateUrl="#" value="1"></asp:MenuItem>
<asp:MenuItem Text="People" NavigateUrl="#" value="2"></asp:MenuItem>
</asp:MenuItem>
<asp:MenuItem Text="Contact">
<asp:MenuItem Text="admin" NavigateUrl="#" value="3"></asp:MenuItem>
</asp:MenuItem>
</items>
</asp:Menu>
C#:
protected void page_load(object sender, eventargs e)
{
List<tblDetal> lstDetail = objDal.GetData();
foreach(MenuItem parent in menuBar.Items)
{
if(parent.ChildItems.Count > 0)
{
foreach(MenuItem child in parent.ChildItems)
{
bool showItem = false;
foreach(var item in lstDetail)
{
if(convert.toint32(child.value)==item.FormId)
{
showItem = true;
break;
}
}
if(showItem==false)
parent.ChildItems.Remove(child);
}
}
}
}
これは、いくつかの基準に基づいてメニューから項目を削除するための私の簡単なコードでした。コンパイラが「削除」行を読み取った後、foreach ループに戻り、「コレクションが変更されました。列挙操作が実行されない可能性があります」という例外をスローします。
私はそれを理解していますが、これを修正する方法がわかりません。削除するアイテムが 1 つだけであれば、それは簡単だったでしょう。