Miracle:
没错。我把我的例子又改了一下,提供定制user control输出位置的能力,你参考一下吧
[阅读: 617] 2004-12-31 09:18:46
public class BasePage: Page
{
protected myUserCtrl muc;
protected override void OnInit(EventArgs e)
{
base.OnInit (e);
muc = (myUserCtrl)this.LoadControl("~/BasePage/myUserCtrl.ascx");
IPlaceHolderProvider ipc = this as IPlaceHolderProvider;
if(ipc != null && ipc.GetPlaceHolder() != null)
{
ipc.GetPlaceHolder().Controls.Add(muc);
}
else
{
this.Controls.Add(muc);
}
}
}
//======================================================
public interface IPlaceHolderProvider
{
PlaceHolder GetPlaceHolder();
}
//======================================================
public class ChildPage : BasePage, IPlaceHolderProvider
{
protected System.Web.UI.WebControls.PlaceHolder test1;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
#region IPlaceHolderProvider Members
public PlaceHolder GetPlaceHolder()
{
// TODO: Add ChildPage.GetPlaceHolder implementation
return this.test1;
}
#endregion
}