2013-03-08 4 views
1

в нашем приложении asp.net webforms, мы динамически загружаем usercontrols в заполнители. Чтобы сохранить изменения в пост-спинах, наш жизненный цикл страницы немного сложнее, чем обычно. Мы ВСЕГДА восстанавливаем предыдущую структуру управления в pageInit, чтобы успешно загрузить наше viewstate. Только тогда мы очистим местозаполнитель и загрузим в него новый элемент управления.Предотвращение рендеринга пользовательского элемента управления

Это, к сожалению, означает весь жизненный цикл как для старого, так и для нового пользовательского контроля, включая обработку на стороне сервера всего файла markup-файла .ascx.

Теперь мой вопрос: есть ли возможность свести к минимуму обработку старого модуля на стороне сервера, поскольку он никогда не отправляется обратно клиенту (т. Е. Его рендеринг на стороне сервера абсолютно не нужен). То, что я в идеале хотел бы достичь, это своего рода «легкая» загрузка пользовательского контроля, когда единственной целью является восстановление информации о vewstate без его достижения клиентом.

Целью упражнения является оптимизация производительности.

Любые подсказки, идеи или предложения, оцененные!

+1

Рассмотрите возможность добавления примерного кода. –

ответ

2

я решил код работает в 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 
} 

Это может спокойно оставить как есть, код метод не будет работать, пока управление не будет добавлен на страницу и запускается действие.

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

+0

'If Me.Visible Then ... End If' для VB. Спасибо за ответ. – Travis

Смежные вопросы

 Смежные вопросы