Вопрос

У меня есть то, что я себе представляю как довольно стандартный веб-интерфейс.

Существует 4 различных ListViews (элемента управления сеткой), доступ к которым осуществляется с помощью ряда вкладок вверху.

Я реализовал это следующим образом:

альтернативный текст http://img402.imageshack.us/img402/1530/pagedu8.jpg

Вкладка 1 загрузит Страницу 1, содержащую сетку 1, в кадр 2, Вкладка 2 загрузит Страницу 2, содержащую сетку 2, в кадр 2 и т.д.

Однако это означает, что если вы нажмете на элемент в сетке, и я загружу DetailsPage1.aspx в кадр 2, то кадр 1 и вкладки все еще будут видны и активны.

Мне посоветовали, что у меня должен быть только один фрейм, и загружать Страницы динамически на основе щелчка по вкладке, используя HttpRequest (или WebRequest в asp.net).

Правильный ли это подход?Если у вас есть какие-либо ресурсы или советы под рукой, мы были бы признательны!

Спасибо

Это было полезно?

Решение

Фреймы - это абсолютное "нет-нет".В фреймах нет никакой пользы, которой нельзя было бы достичь с помощью других методов.

Означает ли это, что вы должны использовать AJAX?Не обязательно.AJAX - отличное решение, если вы чувствуете необходимость предоставить богатый, бесшовный интерфейс, но это не является строго необходимым.

Вы могли бы использовать серверные включения для разделения ваших вкладок на другую (общую) подстраницу, но поскольку вы упомянули ASP.NET , (предполагая, что вы работаете на платформе framework версии v2 или выше) вы можете захотеть использовать мастер-страницы, где ваши вкладки находятся в одном разделе содержимого или в самом мастере, а ваши сетки / сведения находятся в другом разделе содержимого.

Ключевое различие между этими двумя методами заключается в том, что при использовании AJAX переход от вкладки к вкладке будет плавным, но а) это требует небольшой дополнительной работы (особенно если вы не знакомы с каким-либо фреймворком give AJAX) и б) поскольку у вас, по сути, 4 страницы объединены в одну, страницы "тяжелее" и сложнее в обслуживании.Если вы выберете маршрут без AJAX, ключевое отличие заключается в том, что при нажатии на каждую вкладку будет наблюдаться небольшой, но отчетливый эффект обновления (поскольку при этом каждый раз загружается новая страница).

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

Другие советы

Кадры хромают:у вас возникнут проблемы, если пользователи захотят установить закладку и если пользователи заходят на ваш сайт через Google:Тогда ваша навигационная рамка не будет видна.Таким образом, вам нужно много грязного javascript.чтобы проверить это.Если вам нужен javascript, сделайте это с самого начала и используйте AJAX

"Аякс" - лучший выбор.Но имейте в виду, чтобы сделать его доступным для просмотра через back / forward.Лучший выбор - изменить хэш страницы.Я использовал что-то вроде этого:

domain.com/#tab1 для первой вкладки domain.com/#tab2 для второй вкладки

и так далее.

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

Вместо использования фреймов вам следует просто включить свою страницу навигации во все другие ваши страницы.Браузер увидит, что вы включаете один и тот же документ на все свои страницы, и кэширует его.

Вы пробовали использовать Контейнер для вкладок или загружать все 4 панели деталей и просто показывать / скрывать панели при изменении выбора вкладки?

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

Я бы рекомендовал использовать jQuery и плагин jQuery UI.Никакие фреймы не понадобятся, только контейнеры div.

Как и StingyJack, я бы посоветовал взглянуть на Контейнер для вкладок контролируйте, но вы, возможно, захотите позаботиться о том, чтобы ваше состояние просмотра не стало слишком большим, если вы это сделаете.

Так, например, не загружайте ничего в GridView до тех пор, пока эта вкладка не будет просмотрена, и удалите ее содержимое, если это не так (при необходимости, конечно, сохраните обратно в базу данных.Использование события ActiveTabChanged от TabContainer было бы ключевым для этой стратегии.Вы отключаете ViewState для сеток, но оставляете его включенным для контейнера.

Вы используете ASP.NET, поэтому просто загрузите все 4 элемента управления в mutliview, а затем при обратной передаче установите видимым тот, на который когда-либо нажималась кнопка.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.multiview.aspx

НЕ используйте фреймы (или iframes, если уж на то пошло), если вы абсолютно должен...

Единственные веские причины, которые я могу придумать для использования фреймов (i), - это фактически элементы управления загрузкой файлов, и я не уверен, что там это тоже допустимо...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top