ASP.net:动态加载Web用户控件

Jac*_*ack 1 asp.net

当用户从菜单中选择一个项目时,我有一个带有占位符控件和菜单控件的asp.net网页.它将根据菜单项的值动态加载控件.

我加载了控件但如果我点击链接按钮或Web用户控件上的任何内容(.ascx),Web用户控件(.ascx)将消失.我不知道造成这种情况的原因.有人可以看看我的代码,看看我错过了什么?

Protected Sub Menu1_Click(ByVal sender As Object, ByVal e As EventArgs)

    Select Case Me.Menu1.SelectedValue
        Case "CustMasterMain"
            Dim ccCustMasterMaint As UserControl = CType(Page.LoadControl("~/Controls/Franchise/CustMasterMaintControl.ascx"), UserControl)
            Me.phHolder1.Controls.Add(ccCustMasterMaint)
        Case "AcctRecInq"
            Dim ccAcctRecInq As UserControl = CType(Page.LoadControl("~/Controls/Franchise/custAccountsReceivableInquiry.ascx"), UserControl)
            Me.phHolder1.Controls.Add(ccAcctRecInq)
    End Select

End Sub
Run Code Online (Sandbox Code Playgroud)

Joe*_*orn 10

请记住,每次进行回发时,您都在使用页面类的全新实例.如果将控件添加到页面类的上一个实例的控件集合中,则需要为后面的每个回发再次添加该控件.

此外,如果要为控件还原ViewState,则需要在Load事件之前将其添加到页面.这意味着在Init或PreInit期间添加控件.