【问题标题】:How to loop through a dynamically loaded asp.net menu control and remove some items?如何循环通过动态加载的 asp.net 菜单控件并删除一些项目?
【发布时间】:2016-09-15 18:55:47
【问题描述】:

我正在开发一个 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);
    }

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    我认为您遇到了问题,因为 MasterPage 的 OnLoad 事件处理程序是在 Content Page 的 OnLoad 事件处理程序之后调用的。

    看到这个:http://weblogs.asp.net/ricardoperes/asp-net-page-events-lifecycle

    【讨论】:

      猜你喜欢
      • 2012-08-05
      • 1970-01-01
      • 2011-08-09
      • 2023-02-05
      • 2012-01-09
      • 2012-05-30
      相关资源
      最近更新 更多