我可以在aspx页面的page_load事件之前调用usercontrol的page_load事件吗?

问题很简单。我可以在aspx页面的page_load之前调用usercontrol的page_load吗?

编辑

无法在父级的page_load之前调用子级的page_load事件。

我有这个名为just4test的aspx类用于测试puropse。 它的aspx代码是:

 

如您所见,它正在使用usercontrol文件。

它的代码背后是:

 protected void Page_Load(object sender, EventArgs e) { if (Page.IsPostBack) { lcont1.my_tv_SelectedNodeChanged(sender, e); } } 

现在用户控件是:

 public partial class lcont : System.Web.UI.UserControl { sql_con sq = new sql_con(); protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { bind_data(); } } public void mytry() { Console.WriteLine("helo"); } public void bind_data() { main_cat mcobj = new main_cat(); List mclist = new List(); mclist = mcobj.get_mcatlist(); populatetree(mclist); } public void populatetree(List mytnode) { TreeNode parentnode = null; foreach (main_cat mc in mytnode) { parentnode = new TreeNode(mc.Cname, mc.Cid.ToString()); foreach (sub_cat sc in mc.scl) { TreeNode cnode = new TreeNode(sc.PRODUCT, sc.SID.ToString()); parentnode.ChildNodes.Add(cnode); } parentnode.Collapse(); my_tv.Nodes.Add(parentnode); } } public void my_tv_SelectedNodeChanged(object sender, EventArgs e) { TreeView tv = sender as TreeView; //TreeView tv = new TreeView(); var selectedN = tv.SelectedNode; if (selectedN.Parent != null) { var id = tv.SelectedNode.Value; var name = tv.SelectedNode.Text; //Session["mySvar"] = id; ScriptManager.RegisterStartupScript(this, this.GetType(), "nething", "show("+id+")", true); } else { //Response.Redirect("test.aspx"); } } 

}

我需要调用函数my_tv_SelectedNodeChanged(sender,e); 在just4test页面的page_load之前的usercontrol,我已经这样做了。但是,当我运行程序时,它说

你调用的对象是空的。

我该怎么办?

Page_Load没有,但OnInit之前发生过。 取决于您的实际问题,您可以将逻辑移到那里。

或者在父页面Page_Load事件中执行任何其他操作之前调用User控件的公共方法

请参阅页面生命周期