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

原文地址:https://www.cnblogs.com/wdfrog/p/1744112.html