如何循环动态加载的asp.net菜单控件并删除一些项?

时间:2016-09-15 18:55:47

标签: c# asp.net

我正在开发一个asp.net C#webforms项目。在母版页上,我有一个菜单控件,我在母版页的页面加载事件中动态填充。访问页面时,我想循环浏览菜单中的项目,如果菜单中没有URL,则将用户重定向到登录页面。我在内容页面派生自定义基页类的page_Load事件中执行此操作。我遇到的问题是菜单的项目计数为零。以下是我的代码:

    <asp:Menu ID="menuBarMaster" runat="server" Orientation="Horizontal"   Width="100%"  
            CssClass="MenuBarMaster" MaximumDynamicDisplayLevels="10"   ClientIDMode="Static">               
            <StaticMenuStyle CssClass="staticMenuItem" />   
            <StaticHoverStyle CssClass="staticHoverStyle"></StaticHoverStyle>             
            <StaticMenuItemStyle CssClass="staticMenuItemStyle" />
            <StaticSelectedStyle CssClass="staticSelectedStyle" />              
            <DynamicMenuItemStyle CssClass="dynamicMenuItemStyle" />
            <DynamicHoverStyle CssClass="dynamicHoverStyle" />
            <DynamicMenuStyle CssClass="dynamicMenuStyle" />
        </asp:Menu>

protected override void OnLoad(EventArgs e)
    {
        var url = HttpContext.Current.Request.Url;
        var menu = this.Master.FindControl("menuBarMaster") as Menu;
        if (menu != null)
        {
            if (menu.Items.Count > 0)
            {
                //loop through the items
        //But this is never reached as the menu.Items.Count equals to 0
            }
        }
        base.OnLoad(e);
    }

1 个答案:

答案 0 :(得分:0)

我认为您正面临这个问题,因为MasterPage的OnLoad事件处理程序是在Content Page的OnLoad事件处理程序之后调用的。

请参阅:http://weblogs.asp.net/ricardoperes/asp-net-page-events-lifecycle