我正在开发一个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);
}
答案 0 :(得分:0)
我认为您正面临这个问题,因为MasterPage的OnLoad事件处理程序是在Content Page的OnLoad事件处理程序之后调用的。
请参阅:http://weblogs.asp.net/ricardoperes/asp-net-page-events-lifecycle