我有一个ascx控件,我将它加载到masterpage的Page_Load()上,在我的ascx控件中我有我的asp UpdatePanel。
在母版页中加载ascx:
protected void Page_Load(object sender, EventArgs e)
{
usercontrols.mainmenu adminmenu = (usercontrols.mainmenu)LoadControl("~/mymenupath.ascx");
//phmainmanu is a placeholder in masterpage
phmainmanu.Controls.Add(adminmenu);
}
问题是这样的: 如果我以这种方式加载usercontrol我的主页内的UpdatePanel不工作,但如果我在我的主页中添加注册标签作为下面的代码并导入ascx,那么UpdatePanel正常工作。
<%@ Register Src="~/admin/usercontrols/contentexplorer.ascx" TagName="Tree" TagPrefix="NAV" %>
<NAV:Tree ID="treenav" runat="server" />
我假设我可能需要在不同的页面生命周期事件中加载控件,我确实尝试了Page_Init但是没有工作,请帮忙。
答案 0 :(得分:0)
如前所述,MasterIn中不存在PreInit。但是,没有必要。只需确保将UserControl添加为UpdatePanel的ContentTemplateContainer的子控件:
protected void Page_Load(object sender, EventArgs e)
{
WebUserControl1 ctrl = (WebUserControl1)LoadControl("~/WebUserControl1.ascx");
UpdatePanel1.ContentTemplateContainer.Controls.Add(ctrl);
}
希望它有所帮助!
答案 1 :(得分:0)
当你说“不工作”(什么不工作?)时,我不确定你的意思,但是记住在将控件添加到控件列表之前设置控件的ID,否则事件可能无法正确执行:
protected void Page_Load(object sender, EventArgs e)
{
WebUserControl1 ctrl = (WebUserControl1)LoadControl("~/WebUserControl1.ascx");
ctrl.ID = "controlId";
UpdatePanel1.ContentTemplateContainer.Controls.Add(ctrl);
}
答案 2 :(得分:-1)