У меня есть веб-страница asp.net с элементом управления заполнителем и элементом управления меню, когда пользователь выбирает элемент из меню. Он будет динамически загружать элемент управления в зависимости от значения пункта меню.
Я загрузил элемент управления, но если я нажму кнопку ссылки или что-нибудь в пользовательском веб-элементе управления (.ascx), веб-элемент управления (.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





Помните, что каждый раз, когда вы выполняете обратную передачу, вы работаете с совершенно новым экземпляром своего класса страницы. Если вы добавили элемент управления в коллекцию элементов управления предыдущего экземпляра класса страницы, вы нужно добавлять его снова для каждой последующей обратной передачи.
Кроме того, если вы хотите, чтобы ViewState был восстановлен для элемента управления, его необходимо добавить на страницу перед в событии Load. Это означает добавление элемента управления во время Init или PreInit.
Джоэл прав в том, что вам нужно добавлять элемент управления при каждой обратной передаче, поэтому вам нужен способ отслеживать, какие элементы управления хранятся на странице.
Заполнитель динамических элементов управления - отличный элемент управления, помогающий управлять динамическими элементами управления на вашей странице при обратных передачах. Я бы порекомендовал вам проверить это, поскольку я использовал его в ряде проектов, и это значительно облегчило мне жизнь.