Asp.net用户控件(UserControl)的一些设计说明
用户控件有时候会包含多个服务器控件,这个时候需要将用户控件的属性暴露出来,供调用窗体使用,
一般情况是直接将用户子控件暴露给出来,
Usercontrol无论是否通过动态加载,UserControl的Page_Load多后于Page的Page_Load事件执行。
参考代码(页面-.aspx Paag_Load代码):
protected void Page_Load(object sender, EventArgs e)
{
// Trace.Warn("窗体Paag_Load");
membership = LoadControl("../Controls/MembershipEdit.ascx") as Admin_Controls_MembershipEdit;
membership.ID = "MEUI"; //membership 控件的Page_Load会在Page_Load完成后触发
phMembershipEdit.Controls.Add(membership);
if (!IsPostBack)
{
InitView();
Action();
}
}
参考:
http://www.cnblogs.com/BoKeRen/archive/2008/01/30/1058844.html
http://msdn.microsoft.com/zh-cn/library/ms178472(v=VS.80).aspx
除了Init()和Unload()之外的所有事件都是从最外面到最里面被激发的,即先执行Page上的实际再执行Control上的对应事件,针对动态加载控件有个“追赶理论”:
当在页面上的Page_Load加载用户控件时,用户控件的,Init,LoadViewState,LoadPostData等,直到追赶到Page_Load时就停止,而Page_Load事件会在页面的Page_Load结束后才开始执行,就是说追赶到页面的Page_Load后将停止 更多参考:http://www.cnblogs.com/wdfrog/archive/2009/12/11/1621603.html