2010-04-21 9 views
7

Używam strony wzorcowej w mojej aplikacji ASP.net, na stronie wzorcowej umieszczam ContentPlaceHolder w panelu aktualizacji, aby obsługiwać AJAX na stronach podrzędnych, pytanie brzmi: jak zatrzymać odświeżanie "kontroli strony głównej" podczas nawigacji między stronami?Zatrzymaj odświeżanie strony głównej podczas nawigacji między stronami?

Do nawigacji między stronami Próbowałem użyć Response.Redirect, windows.location skrypt java bez powodzenia, będę korzystać z ramek lub ramek zamiast Master Pages, aby zatrzymać orzeźwiający?

wszelkie sugestie, aby rozwiązać ten problem będzie wysoko ceniona, Z góry dzięki ...

Odpowiedz

5

Jeśli nie chcesz, aby strona odświeżyła się podczas przełączania między "stronami", nie będziesz miał dobrego rozwiązania przy użyciu strony wzorcowej. Jak powiedzieli inni w różnych słowach, strona wzorcowa jest zwykłym "szablonem" używanym przez różne strony.Nawigacja między jest tak jak wywoływanie różnych stron, i oczywiście przeładuje całą stronę, w tym zawartość strony wzorcowej.

  1. sollution Użyłem z Ajax jest mieć każdą „stronę” jako użytkownik kontroli i umieścić je wszystkie w UpdatePanel z visible="false". Aby nawigować między "stronami", zmień widoczność dla elementów sterujących użytkownika , aby wyświetlić odpowiednią kontrolkę "strona".

  2. Alternatywą jest użycie elementu iframe.

Żadne z tych rozwiązań nie korzysta z MasterPage.

Koncepcja MasterPage została zaprojektowana w celu uproszczenia wspólnego wyglądu przed wprowadzeniem Ajax w ASP.NET. Po tym, jak Ajax stał się popularny, popyt na nie odświeżanie całej strony był bardziej powszechny.

+0

Dzięki za Twój post, wypróbowałem pierwsze rozwiązanie bez umieszczania wszystkich kontrolek na stronie, zamiast tego stworzyłem kontrolki w czasie wykonywania, to znacznie szybciej i lepiej, :(w końcu przeniosłem się z powrotem do ramki, ponieważ wiele problemów wydarzyło się w kodzie Java Script. Teraz Ramki rozwiązały ten problem dla wszystkich dzięki. –

1

mający strukturę jak ten pan wyjaśnił:

  • Mistrz
    • strona Dziecko 1
    • strona Dziecko 2
    • ...

Następnie nie można zapobiec odświeżaniu strony po przełączeniu ze strony 1 na stronę 2 itd., Ponieważ istnieje pojedyncza encja "strona" (treść główna + wybrana zawartość strony) po wyświetleniu jej w przeglądarce.

Jeśli chcesz przełączać między różnymi widokami aplikacji na tej samej stronie (aby zapobiec całkowitemu odświeżeniu strony), możesz użyć pojedynczej strony (Master staje się zupełnie bezużyteczny) z aktualizacją, w której ładujesz różne widoki .

Możesz także użyć iFrame, ale jeśli musisz poradzić sobie z jakimkolwiek rodzajem komunikacji między różnymi częściami strony (niektóre z nich znajdują się w iFrame), osobiście radziłbym, aby ich nie używać.

+0

Dzięki, jak mogę korzystać z UpdatePanel z różnymi widokami? czy możesz wyjaśnić więcej .. –

+0

Możesz użyć kontrolki Tabs, na przykład. http://www.asp.net/ajax/ajaxcontroltoolkit/samples/tabs/tabs.aspx Ale to zależy od efektu, który chcesz osiągnąć, oraz od wizualnego układu aplikacji. – mamoo

2

Strona wzorcowa nie jest niczym więcej, jak rozszerzeniem "normalnej" strony z (przez większość czasu) domyślnym układem aplikacji. Strona wzorcowa i contentplaceholders są renderowane jako pełna strona html. Podczas nawigacji między stronami jest to normalne zachowanie, które odświeża całą stronę. Tak działa sieć.

Praca z elementem iframe może rozwiązać problem. Ma to jednak inne skutki uboczne:

  1. Cały masterpage nie jest już przydatny. Zawartość wokół Twojego elementu iframe to "masterpage".

  2. Dzięki stronie głównej, którą przeglądasz do innego adresu URL, możesz również zobaczyć na pasku adresu przeglądarki. Podczas pracy z iframe nawigujesz w elemencie iframe do innej strony. Adres URL w przeglądarce pozostanie taki sam. Gdy użytkownik aplikacji kliknie przycisk odświeżania, zawsze zaczyna się od domyślnej strony przypisanej do elementu iframe w html. Oczywiście istnieje kilka obejść: W każdym razie niektóre obejścia:

W każdym razie. To naprawdę zależy od twojej aplikacji. Istnieje wiele rozwiązań do obejścia zachowania odświeżającego.

+0

Dzięki, faktycznie rozwiązałem problem odświeżania za pomocą ramek, ale szukam innego sposobu rozwiązania tego problemu, wyobraź sobie, że masz pasek nawigacyjny po lewej stronie i strony po prawej stronie, chcę, gdy kliknęłam dowolny element w NavBar, aby nie odsyłać strony otworu. –

+0

To nie jest odświeżenie. Po prostu zażądaj innego adresu URL, a serwer zwróci ci html, który jest renderowany przez przeglądarkę. Jaki jest twój największy problem/troska, jeśli chodzi o całe odświeżenie? – Joop

+0

Problem polegający na ponownym załadowaniu Logo i paska nawigacji i stopki, Powodując spowolnienie na stronie internetowej. Wymaga się, aby strona internetowa była jak najwięcej aplikacji windowsowych, a nie można tego zrobić bez pełnego wsparcia Ajax. –

Powiązane problemy