Когда у меня есть дочерний элемент управления .ASCX, который должен влиять на что-либо на родительской странице, я не совсем уверен, как мне следует обрабатывать поток событий в случае, когда мне нужно что-то обновить на родительской странице.
Что я всегда делал, так это помещал логику в обработчик событий Pre_Render.
Поскольку это обрабатывается после обработки любых дочерних элементов управления .ascx, я могу быть уверен, что страница ASPX будет правильно отображена перед ее отображением. Я просто не думаю, что это хороший дизайн, и я всегда съеживался, когда мне приходилось это делать. Но теперь есть переполнение стека, так что я могу наконец спросить его!
Например, допустим, у меня есть элемент ascx «контроль входа» на странице. На содержащей странице отображается текстовая метка в строке заголовка для «текущего зарегистрированного пользователя».
Допустим, я нажимаю кнопку «Войти», которая запускает мою аутентификацию и регистрирует моего пользователя. Проблема в том, что текстовая метка на родительской странице уже была отображена как «Нет пользователя, вошедшего в систему». Это не хорошо!
Помещая логику в PreRender, она будет отображаться после того, как пользователь вошел в систему. Мне просто не нравится это, потому что это не то, для чего предназначен PreRender.
Какую намеченную лучшую практику здесь я пропускаю? Я знаю, что мог бы добавить обработчик событий в пользовательский элемент управления, но это тоже кажется неуклюжим, потому что было бы слишком много связей.
PS. Я просто использую это в качестве примера. Я неоднократно сталкивался с этой проблемой, поэтому, пожалуйста, не отвечайте, рассказывая, как реализовать вход в систему!