Asp.net UpdatePanel中的占位符

Asp.net UpdatePanel中的占位符,asp.net,vb.net,Asp.net,Vb.net,提供一些背景的小伪代码: 我有一个带占位符和按钮的ASPX 单击按钮时,会将web用户控件(uc1)添加到我的占位符中 uc有一个按钮 单击时,会将不同的用户控件(uc2)添加到占位符中 在代码中,如果我查看placeholder.controls.count,在按钮单击#4前后,计数会增加1,正如您所期望的那样 问题是#4中添加的uc2没有出现在屏幕上。因此,我将占位符包装在UpdatePanel中。我以前从未用过。因此,我可以在添加uc2后刷新占位符 相关ASPX代码 <ajaxToo

提供一些背景的小伪代码:

  • 我有一个带占位符和按钮的ASPX
  • 单击按钮时,会将web用户控件(uc1)添加到我的占位符中
  • uc有一个按钮
  • 单击时,会将不同的用户控件(uc2)添加到占位符中
  • 在代码中,如果我查看placeholder.controls.count,在按钮单击#4前后,计数会增加1,正如您所期望的那样

    问题是#4中添加的uc2没有出现在屏幕上。因此,我将占位符包装在UpdatePanel中。我以前从未用过。因此,我可以在添加uc2后刷新占位符

    相关ASPX代码

    <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server></ajaxToolkit:ToolkitScriptManager>
        <ajaxToolkit:TabContainer ID="tcNavigation" runat="server" ActiveTabIndex="0">
        <ajaxToolkit:TabPanel ID="tpWebMerchandising" runat="server" HeaderText="WEB">
                        <ContentTemplate>
                            <table cellpadding="3" cellspacing="0" border="0">
                                <tr>
                                    <td valign="top" class="label">Attributes</td>
                                    <td>
                                        <asp:UpdatePanel runat="server" id="UpdatePanel1" updatemode="Conditional">
                                            <ContentTemplate>
                                                <asp:PlaceHolder ID="phAttributes" runat="server"></asp:PlaceHolder><br />
                                            </ContentTemplate>
                                        </asp:UpdatePanel>
    
                                        <asp:Button ID="btnAddAttribute" runat="server" Text="Add Attribute" /> | <asp:Button ID="btnCreateAttribute" runat="server" Text="Create Attribute" />
                                    </td>
                                </tr>
                            </table>
                        </ContentTemplate>
                    </ajaxToolkit:TabPanel>
                </ajaxToolkit:TabContainer>
    
    我试过这个

    up.Update()
    
    而这个

    Me.Page.RegisterStartupScript("AutoPostBackScript", "__doPostBack('UpdatePanel1', '');")
    

    目标是刷新占位符,以便在屏幕上显示新的CtratAttributes。

    首先,使用Parent.FindControl,而不是这堆乱七八糟的foreach es。

    这段代码太糟糕了,原因太多了,让我感到不舒服。你知道你可以用Me.phAttributes和Me.UpdatePanel1来获取控件,而不是循环的所有控件吗?
    Me.Page.RegisterStartupScript("AutoPostBackScript", "__doPostBack('UpdatePanel1', '');")