Остановить обновление главной страницы при переходе между страницами? - PullRequest
7 голосов
/ 21 апреля 2010

Я использую главную страницу в своем приложении ASP.net, на главной странице я поместил ContentPlaceHolder в панель обновлений для поддержки AJAX на дочерних страницах, вопрос в том, как остановить обновление «элементов управления главной страницы» при переходе между страницами

Для навигации между страницами, которые я пытался использовать Response.Redirect , windows.location Java-сценарий безуспешно, я должен использовать Frames или IFrames вместо главных страниц, чтобы остановить обновление ?

Любые предложения по решению этой проблемы будут высоко оценены, Заранее спасибо ...

Ответы [ 3 ]

5 голосов
/ 30 апреля 2010

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

  1. Раствор, который я использовал с Ajax: иметь каждую "страницу" в качестве пользователя элементы управления и поместите их все в UpdatePanel с visible="false". Затем для навигации между «страницами» переключите видимость для пользовательских элементов управления чтобы показать правильный «страничный» элемент управления.

  2. Альтернатива - использовать iframe.

Ни одно из этих решений не использует MasterPage.

Концепция MasterPage была разработана для упрощения общего вида до появления Ajax в ASP.NET. После того, как Ajax стал популярным, требование не обновлять всю страницу стало более распространенным.

2 голосов
/ 21 апреля 2010

Мастер-страница - это не что иное, как расширение вашей "обычной" страницы с (в большинстве случаев) макетом вашего приложения по умолчанию. Главная страница и заполнители содержимого отображаются в виде полной HTML-страницы. Когда вы перемещаетесь между страницами, обновляется вся ваша страница. Вот как работает интернет.

Работа с iframe может решить вашу проблему. Однако это имеет некоторые другие побочные эффекты:

  1. Вся мастер-страница больше не нужна. Содержимое вашего iframe - это «главная страница».

  2. С главной страницей вы фактически переходите на другой URL, вы также видите в строке URL вашего браузера. Когда вы работаете с iframe, вы переходите внутри iframe на другую страницу. URL в вашем браузере останется прежним. Когда пользователь вашего приложения нажимает кнопку обновления, он всегда начинается снова со страницы по умолчанию, которую вы присвоили своему iframe в html. Конечно, есть некоторые обходные пути

Во всяком случае. Это действительно зависит от вашего приложения. Существует несколько решений для решения проблемы обновления.

1 голос
/ 21 апреля 2010

Имея структуру, подобную той, которую вы объяснили:

  • Мастер
    • Детская страница 1
    • Детская страница 2
    • ...

Тогда вы не сможете предотвратить обновление страницы при переключении со страницы 1 на страницу 2 и т. Д., Поскольку у вас есть одна сущность «страница» (основной контент + выбранный контент страницы), когда она отображается в браузере.

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

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

...