开发者

User controls called from child pages do not appear on master page

开发者 https://www.devze.com 2022-12-12 09:41 出处:网络
I have a custom user control in ASP.net: MenuButton.ascx: <%@ Control Language=\"C#\" Aut开发者_如何学PythonoEventWireup=\"true\" CodeFile=\"~/MenuButton.ascx.cs\" Inherits=\"MenuButton\" ClassNa

I have a custom user control in ASP.net:

MenuButton.ascx:

<%@ Control Language="C#" Aut开发者_如何学PythonoEventWireup="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 has this:

<%@ 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" });

It compiles OK, even with the debugger it does what it should do but they just don't appear on my page. Am I missing something here?

Thanks.


Edit 1:

I tried to override OnInit on my master page:

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

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

It didn't work also.


I think you have to add your new buttons in the Page_Init method.

// EDIT: I just tested this, but it doesn´t work.

0

精彩评论

暂无评论...
验证码 换一张
取 消