我有一个复杂的案例,所以我无法发布。
我有两个UpdatePanels
,里面有两个UserControls
,如下所示:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<A:u1 ID="u1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<A:u2 ID="u2" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
在此示例中,PostBack
中的u1
对u2
不起作用。但是在我的代码中,第一个PostBack
中的UserControl
在第二个PostBack
中生成{{1}}。
预期的原因是什么?
感谢您的帮助。
答案 0 :(得分:1)
这是设计的:当发生部分回发时,即使只将部分结果标记发送到客户端,也会再次呈现整个页面。因此,即使只更新u1
,您的用户控件也会再次执行生命周期。
如果要检测该情况,可以使用IsInAsyncPostBack属性:
protected void Page_Load(object sender, EventArgs e)
{
if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack) {
// This is a partial postback.
}
}