Du får lige en fuldstændig lam skitse... men det er bare for at du kan se princippet i det :
Jeg har en folder der hedder UserControls under mit web, og det indeholder to - ja usercontrols :o)
den første (TopBar.ascx) :
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="TopBar.ascx.cs" Inherits="EXP.UserControls.TopBar" TargetSchema="
http://schemas.microsoft.com/intellisense/ie5"%>TOP
<hr>
den anden (SubBar.ascx) :
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="SubBar.ascx.cs" Inherits="EXP.UserControls.SubBar" TargetSchema="
http://schemas.microsoft.com/intellisense/ie5"%><hr>
SUB
Så har jeg her en form (SomeForm.aspx) - med en knap og en tekstboks :
<%@ Page language="c#" Codebehind="SomeForm.aspx.cs" AutoEventWireup="false" Inherits="EXP.SomeForm" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>SomeForm</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="
http://schemas.microsoft.com/intellisense/ie5"> </HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
</form>
</body>
</HTML>
Med denne code-behind :
public class SomeForm : KABaseForm
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(object sender, System.EventArgs e)
{
}
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
}
Læg mærke til at den arver fra KABaseForm, som ser ud som følger :
public class KABaseForm : Page
{
protected Panel pnlHeader = new Panel();
protected Panel pnlFooter = new Panel();
protected override void OnInit(EventArgs e)
{
TopBar tb = (TopBar)LoadControl("~/UserControls/TopBar.ascx");
pnlHeader.Controls.Add(tb);
this.Controls[1].Controls.AddAt(0,pnlHeader);
base.OnInit (e);
}
protected override void Render(HtmlTextWriter writer)
{
SubBar sb = (SubBar)LoadControl("~/UserControls/SubBar.ascx");
pnlFooter.Controls.Add(sb);
this.Controls[1].Controls.Add(pnlFooter);
base.Render (writer);
}
}
i initialiseringen sætter den en header ind, og i render sørger den for at sætte en footer ind.