2008-12-13 11 views
7

Czy mogę używać panelu Aktualizacji w masterpage do owijania zagnieżdżonych stron tak, aby podczas przeglądania z jednej strony do drugiej klient otrzymywał tylko częściowe odświeżenie (MasterPage nie zostanie przeładowany).Czy mogę używać UpdatePanel w MasterPage do zawijania zagnieżdżonych stron?

Jeśli tak, to w jaki sposób? Czy mogę po prostu umieścić panel aktualizacji wokół ContentPlaceholder na stronie wzorcowej?

Każda pomoc doceniona!

Odpowiedz

15

nie radzę Ci owinąć całą stronę w UpdatePanel, z następujących powodów:

  • Jeśli chcesz witryny mają być indeksu przez wyszukiwarki, trzeba będzie wyświetlaczu treść na oddzielnych stronach: ... wystarczy, że każda sekcja z treścią będzie miała inny ciąg znaków zapytania. Dzieje się tak dlatego, że wyszukiwarki nie mogą indeksować dynamicznie generowanych danych, a nie mogą indeksować stron.

  • Owijanie całych stron w Update Panel jest bardzo niebezpieczne powodu ogromny narzut, który jest wysyłany do serwera. Zobaczysz znaczny spadek wydajności, jeśli to zrobisz. Czytaj this article uzyskać więcej informacji na temat

  • powodu tej ogromnej napowietrznych, zaleca się używać Update Panel do zmiana tylko niewielkie odcinki stronie (jak małe widżety skrzynkowych na boku, etc ...) a nie całe sekcje treści.

  • Owijanie sekcji zawartości w panelu aktualizacji oznacza, że ​​trzeba będzie zrobić dodatkowy krok, dynamicznie zmieniając adres URL (używająC# kotwicy) ręcznie, a to po to, aby umożliwić użytkownikom korzystanie z przycisku Wstecz w przeglądarce, aby przejść do poprzedniej sekcji witryny. Nie posiadające zdolność do powrotu na stronie jest bardzo irytujące dla użytkowników


Oto przykład, który pokazuje problem z UpdatePanel s.

Poniżej jest kod dla prostej strony aspx z etykietą i przycisk:

<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(); 
} 

I po to częściowe odświeżenie strony wykonane z UpdatePanel po kliknięciu przycisku (zwróć uwagę na duży narzut):

                                    alt text http://encosia.com/blog/media/images/updatepanel-payload-response-sm.png

Jak widać, serwer jest w zasadzie wysyłania wszystkie elementy, które są w UpdatePanel z powrotem do klienta.


Z drugiej strony, oto przykład, który wymaga użycia ASP.Net Page Methods. Zauważ odpowiedź wysłana z serwera to czas (żadnych UpdatePanels zaangażowany):

                                        alt text http://encosia.com/blog/media/images/json-payload-response.png

+0

sens - dzięki – JohnIdol

+1

artykuł jest bardzo int również i zajęcie - problem polega na tym, że ludzie są leniwi :-) – JohnIdol

+1

Bardzo dużo informacji. Zrobiłem wiele artykułów, aby zrozumieć obciążenie związane z UpdatePanel. Wielkie dzięki!!! – Nipuna

Powiązane problemy