Использование.IsPostBack в подпрограмме Page_Load
Является ли "наилучшей практикой" всегда использовать.IsPostBack в подпрограмме Page_Load веб-формы, как в этом примере кодирования?
Я надеюсь, что это нормально, чтобы задать этот вопрос. Если нет, я сразу сниму вопрос.
По сути, я хочу кодировать так, как большинство из вас кодируют.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
' More coding will go here.
'--------------------------
End If
Пожалуйста, дайте плюсы и минусы для его использования.
3 ответа
Это не столько случай "Лучшей практики", сколько вопрос о том, нужно ли вам вообще его использовать.
Это правда, вы бы обычно ставили IsPostBack
в Page_Load
хотя вы могли бы также положить его в Page_Init
- в основном в любом из событий страницы, которые срабатывают перед отображением HTML
,
По сути, вы используете команду, чтобы в этом случае предотвратить запуск кода в теле, когда страница отправляется обратно самому себе; такие как отправка формы или AutoPostBack
на сервере управления, например DropDownList
,
Там нет, по крайней мере, я могу думать, за и против. Это случай необходимости или нет.
Примером, когда вам в идеале понадобится, будет желание получить данные из базы данных только один раз и связать их с DropDownList
, Эти данные будут доступны в состоянии просмотра при обратной передаче. так что вам не нужно будет снова посещать базу данных при обратной передаче.
Пример того, когда вы не поместите код в него, - это если вы генерировали серверные элементы управления (например, кнопки), которые имеют обработчик событий, такой как click
, добавленный одновременно. это должно быть повторно сгенерировано при обратной передаче, чтобы обработчик событий был доступен.
Преимущество заключается в том, что вы можете выполнять свои дорогостоящие операции только один раз. Привязка к gridView... и т. Д.
В основном вещи, которые вы не хотите выполнять во время обновления.
Это всегда зависит от того, что вы хотите оптимизировать. Если ваш код инициализации занимает много времени, лучше сделать это только в первый раз, и пусть ваши элементы управления будут инициализированы через ViewState. Тогда вы используете If Not IsPostBack
,
Но если вы ориентируетесь на мобильные устройства, где пропускная способность более важна, вы можете включить ViewState и снова инициализировать ваши данные на обратных передачах (вы можете прочитать их из Cache или из SessionState). Всегда смотрите ваш ViewState, я видел страницы с 20 kByte ViewState или более.
Плюсы:
- меньше накладных расходов на инициализацию (например, доступ к базе данных)
- меньше памяти на сервере (сеанс или кеш)
Contra:
- больше полосы пропускания для ViewState