当前位置:  开发笔记 > 后端 > 正文

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

如何解决《ASP.net:动态加载Web用户控件》经验,为你挑选了1个好方法。

当用户从菜单中选择一个项目时,我有一个带有占位符控件和菜单控件的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

Joel Coehoor.. 10

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

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



1> Joel Coehoor..:

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

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

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有