Могу ли я использовать UpdatePanel в MasterPage для переноса вложенных страниц?

Можно ли использовать панель «Обновление» на главной странице для переноса вложенных страниц, чтобы при просмотре с одной страницы на другую клиент получал только частичное обновление (MasterPage не перезагружался).

Если так - как? Нужно ли просто разместить панель обновления вокруг ContentPlaceholderглавной страницы?

Любая помощь приветствуется!

13.12.2008 12:57:12
1 ОТВЕТ
РЕШЕНИЕ

Я не советую вам обернуть всю страницу вUpdatePanel , по следующим причинам:

  • Если вы хотите, чтобы ваш сайт индексировался поисковыми системами, вам нужно будет отображать ваш контент на отдельных страницах ... достаточно иметь отдельную строку запроса в каждом разделе контента. Это связано с тем, что для поисковых систем Content Is King и поскольку поисковые системы в настоящее время не могут индексировать динамически сгенерированные данные, они не смогут проиндексировать ваши страницы.

  • Оборачивать целые страницы в Update Panelочень опасно из-за огромных накладных расходов, которые отправляются на сервер . Вы увидите значительное снижение производительности, если вы это сделаете. Прочитайте эту статью для получения дополнительной информации по теме

  • Из-за этих огромных накладных расходов предлагается использовать Update Panelдля обновления только небольшие разделы веб-сайта (например, небольшие прямоугольные виджеты сбоку и т. Д.), А не целые разделы содержимого.

  • Обтекание разделов контента на панели обновлений означает, что вам придется самостоятельно проделывать лишнюю милю, динамически изменяя URL (используя # anchors), и это позволит пользователям использовать кнопку «Назад» в своем браузере для перехода в предыдущий раздел сайта. Отсутствие возможности вернуться на страницу очень раздражает пользователей


Вот пример, который демонстрирует проблему с UpdatePanels.

Ниже приведен код простой страницы aspx с меткой и кнопкой:

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel runat="server" ID="up1">
 <ContentTemplate>
   <asp:Label runat="server" ID="Label1" Text="Update Me!" /><br />
   <asp:Button runat="server" ID="Button1" 
     Text="Postback Update" OnClick="Button1_Click" />
 </ContentTemplate>
</asp:UpdatePanel>

 

protected void Button1_Click(object sender, EventArgs e)
{
  Label1.Text = DateTime.Now.ToLongDateString();
}

И следующее - это частичная обратная передача, выполняемая UpdatePanelпри нажатии кнопки (обратите внимание на огромные накладные расходы): (источник: encosia.com )

                  альтернативный текст

Как видите, сервер в основном отправляет все элементы, которые находятся UpdatePanelсзади, клиенту.


С другой стороны, вот пример, который включает использование методов страницы ASP.Net . Обратите внимание на ответ, отправленный с сервера на этот раз ( без UpdatePanels ):

                    альтернативный текст
(источник: encosia.com )

15
23.02.2019 02:01:08
статья тоже очень интересная - проблема в том, что люди ленивы :-)
JohnIdol 13.12.2008 13:58:08
Очень информативно. Взял много статей, чтобы понять накладные расходы, связанные с UpdatePanel. Большое спасибо!!!
Nipuna 25.05.2011 10:46:29