У меня есть пользовательский элемент управления в 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);
}
}
Это тоже не сработало.