Использование.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
Другие вопросы по тегам