ASP.net: динамическая загрузка пользовательского веб-элемента управления

У меня есть веб-страница 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
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
4 363
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Помните, что каждый раз, когда вы выполняете обратную передачу, вы работаете с совершенно новым экземпляром своего класса страницы. Если вы добавили элемент управления в коллекцию элементов управления предыдущего экземпляра класса страницы, вы нужно добавлять его снова для каждой последующей обратной передачи.

Кроме того, если вы хотите, чтобы ViewState был восстановлен для элемента управления, его необходимо добавить на страницу перед в событии Load. Это означает добавление элемента управления во время Init или PreInit.

Джоэл прав в том, что вам нужно добавлять элемент управления при каждой обратной передаче, поэтому вам нужен способ отслеживать, какие элементы управления хранятся на странице.

Заполнитель динамических элементов управления - отличный элемент управления, помогающий управлять динамическими элементами управления на вашей странице при обратных передачах. Я бы порекомендовал вам проверить это, поскольку я использовал его в ряде проектов, и это значительно облегчило мне жизнь.

Другие вопросы по теме