当UpdatePanel将PostBack发送给另一个

时间:2011-01-31 11:10:02

标签: asp.net updatepanel

我有一个复杂的案例,所以我无法发布。

我有两个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中的u1u2不起作用。但是在我的代码中,第一个PostBack中的UserControl在第二个PostBack中生成{{1}}。

预期的原因是什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这是设计的:当发生部分回发时,即使只将部分结果标记发送到客户端,也会再次呈现整个页面。因此,即使只更新u1,您的用户控件也会再次执行生命周期。

如果要检测该情况,可以使用IsInAsyncPostBack属性:

protected void Page_Load(object sender, EventArgs e)
{
    if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack) {
        // This is a partial postback.
    }
}