我有一个带有更新面板的母版页:
<asp:UpdatePanel ID="UpdatePanel" runat="server" ChildrenAsTriggers="true" EnableViewState="False"
UpdateMode="Conditional">
<ContentTemplate>
<div id="mainContent">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</ContentTemplate>
<Triggers>
</Triggers>
</asp:UpdatePanel>
然后,我有了使用母版文件的Default.aspx页面:
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
<asp:PlaceHolder ID="plhCurrentItem" runat="server"></asp:PlaceHolder>
</asp:Content>
我以编程方式将用户控件加载到ID为plhCurrentItem的占位符中。
问题是,当我单击用户控件中的按钮时,不会触发任何事件。用户控件只是消失而updatepanel留为空白。
我究竟做错了什么?
更新资料
用于添加用户控件的代码。从Page_load事件中调用LoadControls方法。
Control ctlCurrentItem = null;
public string currentControl
{
get { return ((string)Session["currentControl"]); }
set { Session["currentControl"] = value; }
}
public void LoadControls()
{
switch (currentControl)
{
case "Home":
ctlCurrentItem = Page.LoadControl("~/pages/Home.ascx");
ctlCurrentItem.ID = "Home";
break;
case "Resume":
ctlCurrentItem = Page.LoadControl("~/pages/Resume.ascx");
ctlCurrentItem.ID = "Resume";
break;
case "Projects":
ctlCurrentItem = Page.LoadControl("~/pages/Projects.ascx");
ctlCurrentItem.ID = "Projects";
break;
case "Contact":
ctlCurrentItem = Page.LoadControl("~/pages/Contact.ascx");
ctlCurrentItem.ID = "Contact";
break;
default:
return;
}
plhCurrentItem.Controls.Clear();
plhCurrentItem.Controls.Add(ctlCurrentItem);
}
最佳答案
将LoadControls调用放在OnPreInt中的page life-cycle事件中:
将此事件用于以下用途:
检查IsPostBack属性,以确定这是否是第一次处理页面。
创建或重新创建动态控件。
动态设置母版页。
动态设置主题属性。
读取或设置配置文件属性值。
关于c# - 用户控件回发在updatepanel中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1589454/