2009-11-18 58 views
0

我在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" }); 

它编译OK,即使它确实应该怎么做,但他们只是不会出现在我的网页上的调试器。我在这里错过了什么吗?

谢谢。


编辑1:

我试图重写OnInit的我的母版页:

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

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

它也没工作。

+0

Default.aspx里面的哪个函数是添加按钮? Page_Load中? – JustLoren 2009-11-18 21:44:40

+0

@JustLoren是的。 – ademers 2009-11-18 21:50:45

+0

您的控件的路径是否正确?加入Page_Init应该可行...... – 2009-11-18 22:35:07

回答

0

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

//编辑:我只是测试了这一点,但它并没有工作。