Запретить рендеринг пользовательского контроля
В нашем приложении asp.net webforms мы динамически загружаем пользовательские элементы управления в заполнители. Чтобы сохранить изменения между постбеками, наш жизненный цикл страницы немного сложнее, чем обычно. Мы ВСЕГДА восстанавливаем предыдущую структуру управления в pageInit, чтобы успешно загрузить наше представление. Только тогда мы очищаем заполнитель и загружаем в него новый элемент управления.
К сожалению, это означает полный жизненный цикл как старого, так и нового пользовательского контроля, включая обработку на стороне сервера всего файла разметки.ascx старого модуля.
Теперь мой вопрос: есть ли возможность минимизировать обработку старого модуля на стороне сервера, так как он никогда не отправляется обратно клиенту (то есть его рендеринг на стороне сервера совершенно не нужен). В идеале я бы хотел добиться своего рода "облегченной" загрузки пользовательского контроля, когда единственной целью является восстановление информации о состоянии сети без ее обращения к клиенту.
Цель упражнения - оптимизация производительности.
Любые советы, идеи или предложения приветствуются!
1 ответ
Я решил код, запущенный в событиях жизненного цикла webcontrol динамически добавленных элементов управления, просто проверив, был ли элемент управления видимым ( http://msdn.microsoft.com/en-us/library/system.web.ui.control.visible.aspx)-
protected void Page_Load(object sender, EventArgs e)
{
if (this.Visible)
{
//Your code here
}
}
Если у вас есть какие-либо методы, которые не запускаются событием жизненного цикла страницы и должны запускаться действием пользователя, например:
protected void Button1_Click(object sender, EventArgs e)
{
//Do something
}
Это можно безопасно оставить как есть, код метода не будет выполняться до тех пор, пока элемент управления не будет добавлен на страницу и действие не будет запущено.
Хотя проверка видимости не выглядит особенно элегантной, это, вероятно, лучший способ справиться с автоматически проводными событиями на динамически загружаемых элементах управления.