从子页面调用的用户控件不会出现在母版页上

时间:2009-11-18 21:33:37

标签: .net asp.net user-controls master-pages

我在ASP.net中有一个自定义用户控件:

MenuButton.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="~/MenuButton.ascx.cs" Inherits="MenuButton" ClassName="MenuButton" %>

<li><a href="<%= Link %>"><span><%= Text %></span></a></li>

MenuButton.ascx.cs:

using System;

public partial class MenuButton : System.Web.UI.UserControl
{
    public String Link = "test.html";
    public String Text = "TEST";

    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

MasterPage.master有这个:

<%@ Reference Control="~/MenuButton.ascx" %>
<%@ Register Src="~/MenuButton.ascx" TagName="Menu" TagPrefix="button" %>


<ul runat="server" id="Menu"></ul>

MasterPage.master.cs

public List<MenuButton> Menus = new List<MenuButton>();
protected void Page_Load(object sender, EventArgs e)
{

    foreach (var control in Menus)
    {
        Menu.Controls.Add(control);
    }
}

Default.aspx的

Master.Menus.Add( new MenuButton { Text = "Test1", Link = "test1.html" });

它编译好,即使使用调试器,它也可以执行它应该执行的操作,但它们不会出现在我的页面上。我在这里错过了什么吗?

感谢。


编辑1:

我试图在我的母版页上覆盖OnInit:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    foreach (var control in SousMenus)
    {
        SousMenu.Controls.Add(control);
    }
}

它也不起作用。

1 个答案:

答案 0 :(得分:0)

我认为您必须在Page_Init方法中添加新按钮。

//编辑:我刚测试了这个,但它不起作用。