Главные страницы и постбэк в ASP.NET - PullRequest
0 голосов
/ 23 декабря 2008

Как мы можем избежать того, чтобы Мастер Пейдж отправлял всю страницу назад?

Ответы [ 3 ]

2 голосов
/ 23 декабря 2008

Просто уточнить - панель обновления не предотвращает обратную передачу всей страницы или полный жизненный цикл страницы. Это просто приводит к тому, что этот процесс завершается в фоновом режиме, «невидимому» для пользователя. Единственное отличие состоит в том, что после завершения обратной передачи обновляется только раздел, обернутый объявлением панели обновления, что создает иллюзию, что только часть страницы отправляется обратно.

Если элемент управления триггером находится внутри панели обновления, то вы должны установить атрибут ChildrenAsTriggers равным True. Если элемент управления, запускающий обновление, находится за пределами панели обновлений, необходимо добавить раздел «Триггеры» на панель управления и добавить асинхронный триггер. Если это комбинация, то вы можете объединить два для лучшего эффекта.

Если элемент управления, запускающий обновление, содержится на панели обновлений:

<asp:UpdatePanel id="MyUpdatePanel" runat="server" ChildrenAsTriggers="True">
  <ContentTemplate>
    ...Stuff you want updated
  </ContentTemplate>
</asp:UpdatePanel>

Или, если элемент управления отсутствует на панели обновлений:

<asp:UpdatePanel id="MyUpdatePanel" runat="server">
  <ContentTemplate>
    ...Stuff you want updated
  </ContentTemplate>
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="MyButtonControl" EventName="Click" />
  </Triggers>
</asp:UpdatePanel>
1 голос
/ 23 декабря 2008

Использование главной страницы на самом деле не влияет на то, отправляет ли вся страница назад или нет. Простая страница ASPX без мастера и стандарта также может выполнить обратную передачу всей страницы.

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

В любом случае, ключ к предотвращению полного обновления страницы (будь то использование главных страниц или нет) заключается в том, чтобы убедиться, что элемент управления, вызывающий обратную передачу, живет внутри UpdatePanel или использовать некоторый JavaScript для обратного вызова на сервер и обработки ответ асинхронный.

0 голосов
/ 23 декабря 2008

Мастер-страница не отвечает за PostBack, для этого и нужна HTML-форма.

Единственный способ, которым вы могли бы предотвратить публикацию страницы, - это обернуть все это в UpdatePanel. Но это само по себе является действительно плохой идеей !!

...