70-562: Understanding and Using Server Controls

Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET.

ASP.NET udostępnia programiście dwa typu kontrolek serwerowych, które może wykorzystać w swoich aplikacjach webowych: HTML Controls oraz Web Controls. Ale zanim opiszę różnice między nimi, warto zapoznać się z cyklem życia strony ASP.NET.

View State

ASP.NET poszczególne żądania do strony traktuje jako osobne i nie przechowuje żadnych informacji pomiędzy kolejnymi odsłonami (są różne mechanizmy zapisywania stanu, które zostaną opisane w późniejszych artykułach). ASP.NET wykorzystuje mechanizm View State, który umożliwia zapisywanie statu kontrolek pomiędzy kolejnymi żądaniami do strony. View State nie jest przechowywany po stronie serwera, tylko jest przekazywany w treści strony. Dokładny opis mechanizmu View State zostanie opisany później, tutaj został tylko wspomniany, ponieważ jest ważny przy omawianiu cyklu życia strony ASP.NET.

Cykl życia strony ASP.NET

Gdy użytkownik wysyła żądanie wyświetlenia strony ASP.NET, serwer odbiera to żądanie i następnie uruchamia cały mechanizm ASP.NET, który składa się ogólnie z następujących kroków:

  1. Kompilacja strony (o ile jest potrzebna)
  2. Ustawienie Request oraz Response
  3. Inicjalizacja kontrolek na stronie
  4. W przypadku PostBack ustawianie właściwości kontrolek na podstawie View State
  5. Walidacja strony oraz kontrolek
  6. Wywoływania zdarzeń kontrolek (w przypadku PostBack)
  7. Zapisywanie stanu kontrolek w View State
  8. Zwolnienie zasobów i wysłanie gotowej strony do klienta

Aby móc kontrolować cykl życia strony, ASP.NET udostępnia kilkanaście zdarzeń, pod które programista może się podpiąć i wykonać swój kod w danym momencie cyklu życia (np. programowo dodać do strony kontrolki). Poniższa tabela przedstawia najpopularniejsze zdarzenia:

Zdarzenie Opis
PreInit Jest pierwszy zdarzeniem, pod jakie może podpiąć się programista. W nim może ustawić programowo takie rzeczy jak master page, theme lub dodać kontrolki do strony.
Init Wywoływane zaraz po inicjalizacji każdej kontrolki. Zdarzenie te może użyć do zmiany zainicjalizowanych właściwości kontrolki.
InitComplete Wywoływane raz po inicjalizacji wszystkich kontrolek oraz strony.
PreLoad Zdarzenie wywoływane po inicjalizacji strony ale przed odczytaniem View State w przypadku PostBacku.
Load Wywoływane po inicjalizacji strony oraz odczytaniu View State. Zdarzenie Load jest wywoływane pierw dla strony, później dla poszczególnych kontrolek. Warto o tym pamiętać tworząc swoją własną kontrolkę.
Control (PostBack) events Zdarzenia poszczególnych kontrolek np. zdarzenie Click dla przycisku.
LoadComplete W tym momencie każda z kontrolek jest załadowana i obsłużone są ich wszystkie zdarzenia.
PreRender Zdarzenie wywoływane przed zapisaniem stanu kontrolek w View State
SaveStateComplete Wywoływane po zapisaniu View State, wszelkie zmiany kontrolek w tym momencie są już ignorowane.
UnLoad Zdarzenie użyteczne do zwolnienia różnych zasobów wykorzystywanych przez stronę.

Znajomość cyklu życia strony oraz poszczególnych zdarzeń jest ważna, aby móc w pełni zapanować na procesem tworzenie strony.

HTML Server Controls

Kontrolki serwerowe HTML powinny być używane w jednym z poniższych przypadków:

  • Podczas migracji strony z ASP do ASP.NET
  • Kontrolka wymaga zwykłego Java Script podpiętego pod zdarzenia kontrolki
  • Gdy strona zawiera dużą ilość Java Scriptu

Kontrolki serwerowe HTML są bardzo podobne do zwykłych kontrolek HTML, z tą różnicą, że mają dodany atrybut runat=”server” oraz muszą mieć ustawiony atrybut Id, który jest wykorzystywany do dostępu do kontrolki z poziomu kodu behind.

Web Server Controls

Kontrolki serwerowe, są bardziej rozbudowane niż kontrolki serwerowe HTML oraz dają programiście większe możliwości budowania bogatych aplikacji webowych. Często jedna kontrolka serwerowa jest zamieniana później w docelowym HTMLu na kilkanaście znaczników HTML oraz dołączany może być do strony kod Java Script (w przeciwieństwie do kontrolek serwerowych HTML, gdzie jedna kontrolka jest zamieniana na jeden znacznik HTMLa). Wszystkie kontrolki serwerowe dziedziczą po klasie WebControl, która udostępnia sporą ilość atrybutów, którymi programista może później zmieniać zachowanie oraz wygląd kontrolek.

W następnych dwóch artykułach zostaną opisane najbardziej typowe kontrolki serwerowe.

Tagi: , , , ,

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading