Kontrolki serwera
autor: Microsoft
ASP.NET 2.0 rozszerza mechanizmy kontroli serwera na wiele sposobów. W tym module omówimy niektóre zmiany architektury w sposobie, w jaki ASP.NET 2.0 i Visual Studio 2005 dotyczą kontrolek serwera.
ASP.NET 2.0 rozszerza mechanizmy kontroli serwera na wiele sposobów. W tym module omówimy niektóre zmiany architektury w sposobie, w jaki ASP.NET 2.0 i Visual Studio 2005 dotyczą kontrolek serwera.
Stan widoku
Podstawowa zmiana stanu widoku w ASP.NET 2,0 jest dramatycznym zmniejszeniem rozmiaru. Rozważmy stronę z tylko kontrolką Kalendarz. Oto stan widoku w ASP.NET 1.1.
dDwtMTg1NDkwMjc0Nzt0PDtsPGk8MT47PjtsPHQ8O2w8aTwxPjs
+O2w8dDxAMDxwPHA8bDxTRDs+O2w8bDxTeXN0ZW0uRGF0ZVRpbWUsIG1
zY29ybGliLCBWZXJzaW9uPTEuMC41MDAwLjAsIEN1bHR1cmU9bmV1dHJ
hbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OTwyMDA1LTE
xLTA4Pjs+Oz4+Oz47Ozs7Ozs7Ozs7Pjs7Pjs+Pjs+Pjs+lkX2YWqfACtP
/VWr8G03pob/+tU=
Oto stan widoku na identycznej stronie w ASP.NET 2.0.
/wEPDwULLTEzNjg5MjAxMzgPZBYCAgMPZBYCAgEPPCsAC
gEADxYCHgJTRBYBBgDAEX8OsscIZGRkllfArINjlhvzQX7Xfign2q6HK5E=
Jest to dość znacząca zmiana i biorąc pod uwagę, że stan widoku jest przenoszony tam iz powrotem przez przewody, ta zmiana może dać deweloperom znaczny wzrost wydajności. Zmniejszenie rozmiaru stanu widoku jest w dużej mierze spowodowane sposobem, w jaki obsługujemy go wewnętrznie. Pamiętaj, że stan widoku jest ciągiem zakodowanym w formacie Base64. Aby lepiej zrozumieć zmianę stanu widoku w ASP.NET 2.0, przyjrzyjmy się zdekodowanym wartościom z powyższych przykładów.
Oto stan widoku 1.1 zdekodowany:
t<-1854902747;t<;l<i<1>;>;l<t<;l<
i<1>;>;l<t<@0<p<p<l<SD;>;l<l<
System.DateTime, mscorlib, Version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089<2005-11-08>;>;>>;
>;;;;;;;;;;>;;>;>>;>>;>Eaj
Może to wyglądać trochę jak gibberish, ale istnieje tutaj wzorzec. W ASP.NET 1.x użyliśmy pojedynczych znaków do identyfikowania typów danych i wartości rozdzielonych przy użyciu <> znaków. Element "t" w powyższym przykładzie stanu widoku reprezentuje potrójną wartość. Element Triplet zawiera parę tablic (l" reprezentuje tablicęList). Jedna z tych tablic zawiera int32 ("i") z wartością 1, a druga zawiera kolejną trójkę. Triplet zawiera parę tablic itp. Ważne jest, aby pamiętać, że używamy trojaków, które zawierają pary, identyfikujemy typy danych za pośrednictwem litery, a my używamy < znaków i > jako ograniczników.
W ASP.NET 2.0 stan zdekodowanego widoku wygląda nieco inaczej.
-1368920138 d
d
SD
dddWc A ('ڮ
Należy zauważyć ogromną zmianę wyglądu zdekodowanego stanu widoku. Ta zmiana ma kilka podstaw architektury. Stan widoku w ASP.NET 1.x używał klasy LosFormatter do serializacji danych. W wersji 2.0 używamy nowej klasy ObjectStateFormatter. Ta klasa została specjalnie zaprojektowana w celu pomocy w serializacji i deserializacji stanu widoku i stanu kontroli. (Stan kontroli zostanie omówiony w następnej sekcji). Istnieje wiele korzyści uzyskanych przez zmianę metody, za pomocą której odbywa się serializacja i deserializacja. Jednym z najbardziej dramatycznych jest fakt, że w przeciwieństwie do LosFormatter, który używa TextWriter, ObjectStateFormatter używa BinaryWriter. Dzięki temu ASP.NET 2.0 może przechowywać stan widoku serii bajtów zamiast ciągów. Weźmy na przykład liczbę całkowitą. W ASP.NET 1.1 liczba całkowita wymaga 4 bajtów stanu widoku. W ASP.NET 2.0 ta sama liczba całkowita wymaga tylko 1 bajtu. Wprowadzono inne ulepszenia w celu zmniejszenia ilości przechowywanego stanu widoku. Na przykład wartości DateTime są teraz przechowywane przy użyciu funkcji TickCount zamiast ciągu.
Jakby wszystko to nie wystarczyło, szczególna uwaga została zwrócona na fakt, że jednym z największych konsumentów stanu widoku w 1.x był DataGrid i podobne kontrolki. Główną wadą kontrolek, takich jak DataGrid, w której występuje stan widoku, jest to, że często zawiera duże ilości powtarzających się informacji. W ASP.NET 1.x powtarzane informacje były po prostu przechowywane w kóło, co spowodowało nadęcie stanu widoku. W ASP.NET 2.0 do przechowywania takich danych używamy nowej klasy IndexedString. Jeśli ciąg powtarza się, po prostu przechowujemy token indeksu IndexedString i indeksu w uruchomionej tabeli obiektów IndexedString.
Stan kontroli
Jednym z głównych uchwytów, które deweloperzy mieli ze stanem widoku, był rozmiar dodawany do ładunku HTTP. Jak wspomniano wcześniej, jednym z największych odbiorców stanu widoku jest kontrolka DataGrid. Aby uniknąć ogromnych ilości stanu widoku generowanego przez usługę DataGrid, wielu deweloperów po prostu wyłączyło stan widoku dla tej kontrolki. Niestety, to rozwiązanie nie zawsze było dobre. Stan widoku w ASP.NET 1.x zawiera nie tylko dane niezbędne do poprawnej funkcjonalności kontrolki. Zawiera również informacje dotyczące stanu interfejsu użytkownika kontrolki. Oznacza to, że jeśli chcesz zezwolić na stronicowanie w usłudze DataGrid, musisz włączyć stan widoku, nawet jeśli nie potrzebujesz wszystkich informacji interfejsu użytkownika, które zawierają stan widoku. Jest to scenariusz typu all-or-nothing.
W ASP.NET 2.0 stan kontrolny rozwiązuje ten problem ładnie poprzez wprowadzenie stanu kontroli. Stan kontroli zawiera dane, które są absolutnie niezbędne do prawidłowej funkcjonalności kontrolki. W przeciwieństwie do stanu widoku nie można wyłączyć stanu kontroli. Dlatego ważne jest, aby dane przechowywane w stanie kontroli były dokładnie kontrolowane.
Uwaga
Stan kontroli jest utrwalany wraz ze stanem widoku w polu __VIEWSTATE ukrytego formularza.
Ten film wideo to przewodnik po stanie widoku i stanie kontroli.
Aby kontrolka serwera do odczytu i zapisu w stanie kontroli, należy wykonać trzy kroki.
Krok 1. Wywołanie metody RegisterRequiresControlState
Metoda RegisterRequiresControlState informuje ASP.NET, że kontrolka musi utrwalać stan kontroli. Przyjmuje jeden argument typu Control, który jest kontrolką, która jest rejestrowana.
Należy pamiętać, że rejestracja nie jest zachowywana z żądania do żądania. W związku z tym ta metoda musi być wywoływana dla każdego żądania, jeśli kontrolka ma utrwalać stan kontroli. Zaleca się wywołanie metody w metodzie OnInit.
protected override void OnInit(EventArgs e) { Page.RegisterRequiresControlState(this); base.OnInit(e); }
Krok 2. Zastąpienie parametru SaveControlState
Metoda SaveControlState zapisuje zmiany stanu kontrolki dla kontrolki od ostatniego wpisu wstecz. Zwraca obiekt reprezentujący stan kontrolki.
Krok 3. Zastąpienie elementu LoadControlState
Metoda LoadControlState ładuje zapisany stan do kontrolki. Metoda przyjmuje jeden argument typu Object, który przechowuje zapisany stan dla kontrolki.
Pełna zgodność XHTML
Każdy deweloper sieci Web zna znaczenie standardów w aplikacjach internetowych. Aby zachować oparte na standardach środowisko programistyczne, ASP.NET 2.0 jest w pełni zgodne z XHTML. W związku z tym wszystkie tagi są renderowane zgodnie ze standardami XHTML w przeglądarkach, które obsługują kod HTML 4.0 lub nowszy.
Definicja DOCTYPE w ASP.NET 1.1 była następująca:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN
W ASP.NET 2.0 domyślna definicja DOCTYPE jest następująca:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
W przypadku wybrania tej opcji możesz zmienić domyślną zgodność XHTML za pośrednictwem węzła xhtmlConformance w pliku konfiguracji. Na przykład następujący węzeł w pliku web.config zmieni zgodność XHTML na Strict XHTML 1.0:
<xhtmlConformance mode="Strict" />
W przypadku wybrania tej opcji można również skonfigurować ASP.NET do używania starszej konfiguracji używanej w ASP.NET 1.x w następujący sposób:
<xhtmlConformance mode="Legacy" />
Renderowanie adaptacyjne przy użyciu kart
W ASP.NET 1.x plik konfiguracji zawierał sekcję <browserCaps> , która wypełniła obiekt HttpBrowserCapabilities. Ten obiekt pozwolił deweloperowi określić, jakie urządzenie wykonuje określone żądanie i odpowiednio renderuje kod. W ASP.NET 2.0 model został ulepszony, a teraz używa nowej klasy ControlAdapter. Klasa ControlAdapter zastępuje zdarzenia w cyklu życia kontrolki i kontroluje renderowanie kontrolek na podstawie możliwości agenta użytkownika. Możliwości określonego agenta użytkownika są definiowane przez plik definicji przeglądarki (plik z rozszerzeniem pliku przeglądarki) przechowywany w folderze c:\windows\microsoft.net\framework\v2.0.****\CONFIG\Browser.
Uwaga
Klasa ControlAdapter jest abstrakcyjną klasą.
Podobnie jak <w sekcji browserCaps> w wersji 1.x plik definicji przeglądarki używa wyrażenia regularnego do analizowania ciągu agenta użytkownika w celu zidentyfikowania przeglądarki żądającej. Definiuje on określone możliwości dla tego agenta użytkownika. Kontrolka ControlAdapter renderuje kontrolkę za pomocą metody Render. W związku z tym, jeśli zastąpisz metodę Render, nie należy wywoływać funkcji Render w klasie bazowej. Może to spowodować dwukrotne wystąpienie renderowania, raz dla karty i raz dla samej kontrolki.
Tworzenie adaptera niestandardowego
Możesz opracować własną kartę niestandardową, dziedzicując z kontrolki ControlAdapter. Ponadto można dziedziczyć z klasy abstrakcyjnej PageAdapter w przypadkach, gdy karta jest wymagana dla strony. Mapowanie kontrolek na kartę niestandardową odbywa się za pośrednictwem <elementu controlAdapters> w pliku definicji przeglądarki. Na przykład poniższy kod XML z pliku definicji przeglądarki mapuje kontrolkę Menu na klasę MenuAdapter:
<controlAdapters> <adapter controlType="System.Web.UI.WebControls.Menu" adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" /> </controlAdapters>
Korzystanie z tego modelu staje się dość łatwe, aby deweloper kontroli był przeznaczony dla określonego urządzenia lub przeglądarki. Deweloper ma również dość prostą kontrolę nad sposobem renderowania stron na każdym urządzeniu.
renderowanie Per-Device
Właściwości kontroli serwera w ASP.NET 2.0 można określić dla poszczególnych urządzeń przy użyciu prefiksu specyficznego dla przeglądarki. Na przykład poniższy kod zmieni tekst etykiety w zależności od tego, które urządzenie jest używane do przeglądania strony.
<asp:Label ID="lblBrowser" runat="server" Text="You are browsing from an unknown device." ie:Text="You are browsing from Internet Explorer." mozilla:Text="You are browsing from Firefox."> </asp:Label>
Gdy strona zawierająca tę etykietę jest przeglądana z programu Internet Explorer, etykieta wyświetli tekst z informacją "Przeglądasz z programu Internet Explorer". Po przejściu strony z przeglądarki Firefox etykieta wyświetli tekst "Przeglądasz z przeglądarki Firefox". Po przejściu strony z dowolnego innego urządzenia zostanie wyświetlony komunikat "Przeglądasz z nieznanego urządzenia". Dowolną właściwość można określić przy użyciu tej specjalnej składni.
Ustawianie fokusu
ASP.NET 1.x deweloperzy często pytają o sposób ustawiania początkowego skupienia się na określonej kontrolce. Na przykład na stronie logowania warto mieć pole tekstowe User ID (Identyfikator użytkownika) fokus po pierwszym załadowaniu strony. W ASP.NET 1.x wykonanie tej czynności wymaga napisania skryptu po stronie klienta. Mimo że taki skrypt jest trywialnym zadaniem, nie jest już konieczne w ASP.NET 2,0 dzięki metodzie SetFocus. Metoda SetFocus przyjmuje jeden argument wskazujący kontrolkę, która powinna otrzymywać fokus. Ten argument może być identyfikatorem klienta kontrolki jako ciągiem lub nazwą kontrolki Serwer jako obiekt kontrolny. Aby na przykład ustawić początkowy fokus na kontrolkę TextBox o nazwie txtUserID podczas pierwszego ładowania strony, dodaj następujący kod do Page_Load:
if (!IsPostBack) {
SetFocus(txtUserID);
}
--Lub
if (!IsPostBack) {
SetFocus(txtUserID.ClientID);
}
ASP.NET 2.0 używa programu obsługi Webresource.axd (omówionego wcześniej) w celu renderowania funkcji po stronie klienta, która ustawia fokus. Nazwa funkcji po stronie klienta jest WebForm_AutoFocus, jak pokazano poniżej:
<script type="text/javascript"> <!-- WebForm_AutoFocus('txtUserID'); // --> </script>
Alternatywnie możesz użyć metody Focus dla kontrolki, aby ustawić początkowy fokus na tę kontrolkę. Metoda Focus pochodzi z klasy Control i jest dostępna dla wszystkich kontrolek ASP.NET 2.0. W przypadku wystąpienia błędu walidacji można również ustawić fokus na określoną kontrolkę. Zostanie to omówione w późniejszym module.
Nowe kontrolki serwera w programie ASP.NET 2.0
Poniżej przedstawiono nowe kontrolki serwera w ASP.NET 2.0. Bardziej szczegółowo omówimy niektóre z nich w kolejnych modułach.
ImageMap, kontrolka
Kontrolka ImageMap umożliwia dodawanie hotspotów do obrazu, który może zainicjować post z powrotem lub przejść do adresu URL. Dostępne są trzy typy hotspotów; CircleHotSpot, RectangleHotSpot i PolygonHotSpot. Hotspoty są dodawane za pośrednictwem edytora kolekcji w programie Visual Studio lub programowo w kodzie. Interfejs użytkownika nie jest dostępny do rysowania hotspotów na obrazie. Współrzędne i rozmiar lub promień hotspotu muszą być określone deklaratywnie. W projektancie nie ma również wizualnej reprezentacji hotspotu. Jeśli hotspot jest skonfigurowany do przechodzenia do adresu URL, adres URL jest określony za pośrednictwem właściwości NavigateUrl hotspotu. W przypadku hotspotu post back właściwość PostBackValue umożliwia przekazanie ciągu w poście z powrotem, który można pobrać w kodzie po stronie serwera.
Rysunek 1. Edytor kolekcji HotSpot w programie Visual Studio
BulletedList, kontrolka
Kontrolka BulletedList to lista punktowana, którą można łatwo powiązać z danymi. Listę można porządkować (numerowaną) lub nieurządkowaną za pomocą właściwości BulletStyle. Każdy element na liście jest reprezentowany przez obiekt ListItem.
Rysunek 2. Kontrolka BulletedList w programie Visual Studio
HiddenField, kontrolka
Kontrolka HiddenField dodaje pole ukrytego formularza do strony, którego wartość jest dostępna w kodzie po stronie serwera. Zazwyczaj oczekuje się, że wartość ukrytego pola formularza pozostanie niezmieniona między backs post. Jednak złośliwy użytkownik może zmienić wartość przed powrotem. W takim przypadku kontrolka HiddenField zgłosi zdarzenie ValueChanged. Jeśli masz poufne informacje w kontrolce HiddenField i chcesz mieć pewność, że pozostanie niezmieniona, należy obsługiwać zdarzenie ValueChanged w kodzie.
FileUpload, kontrolka
Kontrolka FileUpload w ASP.NET 2.0 umożliwia przekazywanie plików na serwer sieci Web za pośrednictwem strony ASP.NET. Ta kontrolka jest bardzo podobna do klasy ASP.NET 1.x HtmlInputFile z kilkoma wyjątkami. W ASP.NET 1.x zaleca się, aby właściwość PostedFile była sprawdzana pod kątem wartości null, aby określić, czy plik był dobry. Kontrolka FileUpload w ASP.NET 2.0 dodaje nową właściwość HasFile, której można użyć w tym samym celu i jest nieco wydajniejsza.
Właściwość PostedFile jest nadal dostępna do uzyskania dostępu do obiektu HttpPostedFile, ale niektóre funkcje pliku HttpPostedFile są teraz dostępne wewnętrznie za pomocą kontrolki FileUpload. Aby na przykład zapisać przekazany plik w ASP.NET 1.x, należy wywołać metodę SaveAs w obiekcie HttpPostedFile. Używając kontrolki FileUpload w ASP.NET 2.0, należy wywołać metodę SaveAs w samej kontrolce FileUpload.
Kolejną znaczącą zmianą zachowania w wersji 2.0 (i prawdopodobnie najbardziej znaczącą zmianą) jest to, że nie jest już konieczne załadowanie całego przekazanego pliku do pamięci przed zapisaniem go. W wersji 1.x każdy przekazany plik jest zapisywany całkowicie w pamięci przed zapisaniem na dysku. Ta architektura uniemożliwia przekazywanie dużych plików.
W ASP.NET 2.0 atrybut requestLengthDiskThreshold elementu httpRuntime umożliwia skonfigurowanie liczby kilobajtów przechowywanych w buforze w pamięci przed zapisem na dysku.
WAŻNE: dokumentacja MSDN (i dokumentacja w innym miejscu) określa, że ta wartość jest wyrażona w bajtach (a nie kilobajtach) i że wartość domyślna to 256. Wartość jest faktycznie określona w kilobajtach, a wartość domyślna to 80. Mając domyślną wartość 80 000, upewniamy się, że bufor nie kończy się na dużym stercie obiektu.
Kontrolka kreatora
Jest to dość powszechne, aby napotkać ASP.NET deweloperów zmagających się z próbą zebrania informacji w serii "stron" przy użyciu paneli lub przez przeniesienie ze strony na stronę. Częściej niż nie, przedsięwzięcie jest frustrujące i jest czasochłonne. Nowa kontrolka Kreator rozwiązuje problemy, umożliwiając wykonywanie kroków liniowych i nieliniowych w interfejsie kreatora, który użytkownicy znają. Kontrolka Kreator przedstawia formularze wejściowe w serii kroków. Każdy krok jest określonym typem określonym przez właściwość StepType kontrolki. Dostępne typy kroków są następujące:
Typ kroku | Wyjaśnienie |
---|---|
Auto | Kreator automatycznie określa typ kroku na podstawie jego pozycji w hierarchii kroków. |
Rozpocznij | Pierwszy krok, często używany do prezentowania instrukcji wprowadzającej. |
Krok | Normalny krok. |
Zakończ | Ostatni krok, zwykle używany do prezentowania przycisku, aby zakończyć pracę kreatora. |
Ukończ | Przedstawia komunikat informujący o powodzeniu lub niepowodzeniu. |
Uwaga
Kontrolka Kreator śledzi jej stan przy użyciu ASP.NET stanu kontroli. W związku z tym właściwość EnableViewState może być ustawiona na wartość false bez szkody.
Ten film wideo jest przewodnikiem po kontrolce Kreatora.
Lokalizowanie kontrolki
Kontrolka Lokalizowanie jest podobna do kontrolki Literał. Jednak kontrolka Lokalizowanie ma właściwość Mode , która kontroluje sposób renderowania znaczników dodawanych do niej. Właściwość Mode obsługuje następujące wartości:
Mode | Wyjaśnienie |
---|---|
Przekształcanie | Adiustacja jest przekształcana zgodnie z protokołem przeglądarki wysyłającej żądanie. |
Przekazywanie | Znaczniki są renderowane zgodnie z rzeczywistymi wersjami. |
Kodowanie | Znaczniki dodane do kontrolki są kodowane przy użyciu kodu HtmlEncode. |
Kontrolki MultiView i View
Kontrolka MultiView działa jako kontener dla kontrolek Widok, a kontrolka Widok działa jako kontener (podobnie jak kontrolka Panel) dla innych kontrolek. Każdy widok w kontrolce MultiView jest reprezentowany przez pojedynczą kontrolkę Widok. Pierwsza kontrolka Widok w widoku MultiView to widok 0, drugi to widok 1 itd. Widoki można przełączać, określając właściwość ActiveViewIndex kontrolki MultiView.
Kontrolka podstawianie
Kontrolka Podstawianie jest używana w połączeniu z buforowaniem ASP.NET. W przypadkach, w których chcesz korzystać z buforowania, ale masz część strony, która musi zostać zaktualizowana na każdym żądaniu (innymi słowy, części strony, które są wykluczone z buforowania), składnik podstawiania zapewnia doskonałe rozwiązanie. Kontrolka nie renderuje żadnych danych wyjściowych samodzielnie. Zamiast tego jest ona powiązana z metodą w kodzie po stronie serwera. Po zażądaniu strony metoda jest wywoływana, a zwrócone znaczniki są renderowane zamiast kontrolki podstawień.
Metoda, do której jest powiązana kontrolka Podstawianie, jest określana za pośrednictwem właściwości MethodName . Ta metoda musi spełniać następujące kryteria:
- Musi to być metoda statyczna (udostępniona w języku VB).
- Akceptuje jeden parametr typu HttpContext.
- Zwraca ciąg reprezentujący znaczniki, które powinny zastąpić kontrolkę na stronie.
Kontrolka Podstawianie nie ma możliwości modyfikowania żadnej innej kontrolki na stronie, ale ma dostęp do bieżącego obiektu HttpContext za pośrednictwem jego parametru.
GridView, kontrolka
Kontrolka GridView zastępuje kontrolkę DataGrid. Ta kontrolka zostanie szczegółowo omówiona w późniejszym module.
DetailsView, kontrolka
Kontrolka DetailsView umożliwia wyświetlanie pojedynczego rekordu ze źródła danych oraz edytowanie lub usuwanie go. Bardziej szczegółowo omówiono go w późniejszym module.
Kontrolka FormView
Kontrolka FormView służy do wyświetlania pojedynczego rekordu ze źródła danych w konfigurowalnym interfejsie. Bardziej szczegółowo omówiono go w późniejszym module.
AccessDataSource , kontrola
Kontrolka AccessDataSource służy do powiązania bazy danych programu Access z danymi. Bardziej szczegółowo omówiono go w późniejszym module.
ObjectDataSource, kontrolka
Kontrolka ObjectDataSource służy do obsługi architektury trójwarstwowej, dzięki czemu kontrolki mogą być powiązane z obiektem biznesowym warstwy środkowej, a nie dwuwarstwowym modelem, w którym kontrolki są powiązane bezpośrednio ze źródłem danych. Zostanie on omówiony bardziej szczegółowo w późniejszym module.
XmlDataSource, kontrolka
Kontrolka XmlDataSource służy do powiązania danych ze źródłem danych XML. Bardziej szczegółowo omówiono go w późniejszym module.
SiteMapDataSource, kontrolka
Kontrolka SiteMapDataSource udostępnia powiązanie danych dla kontrolek nawigacji witryny na podstawie mapy witryny. Zostanie on omówiony bardziej szczegółowo w późniejszym module.
SiteMapPath, kontrolka
Kontrolka SiteMapPath wyświetla serię linków nawigacji często nazywanych stronami nadrzędnymi. Bardziej szczegółowo omówiono go w późniejszym module.
Kontrolka menu
Kontrolka Menu wyświetla dynamiczne menu przy użyciu formatu DHTML. Bardziej szczegółowo omówiono go w późniejszym module.
TreeView — Formant
Kontrolka TreeView służy do wyświetlania hierarchicznego widoku drzewa danych. Bardziej szczegółowo omówiono go w późniejszym module.
Kontrolka logowania
Kontrolka Logowania udostępnia mechanizm logowania do witryny sieci Web. Bardziej szczegółowo omówiono go w późniejszym module.
LoginView, kontrolka
Kontrolka LoginView umożliwia wyświetlanie różnych szablonów na podstawie stanu logowania użytkownika. Bardziej szczegółowo omówiono go w późniejszym module.
PasswordRecovery, kontrolka
Kontrolka PasswordRecovery służy do pobierania zapomnianych haseł przez użytkowników aplikacji ASP.NET. Bardziej szczegółowo omówiono go w późniejszym module.
Loginstatus
Kontrolka LoginStatus wyświetla stan logowania użytkownika. Bardziej szczegółowo omówiono go w późniejszym module.
Loginname
Kontrolka LoginName wyświetla nazwę użytkownika po zalogowaniu się do aplikacji ASP.NET. Bardziej szczegółowo omówiono go w późniejszym module.
Createuserwizard
CreateUserWizard to konfigurowalny kreator, który umożliwia użytkownikom tworzenie konta członkostwa ASP.NET do użycia w aplikacji ASP.NET. Bardziej szczegółowo omówiono go w późniejszym module.
Changepassword
Kontrolka ChangePassword umożliwia użytkownikom zmianę hasła dla aplikacji ASP.NET. Bardziej szczegółowo omówiono go w późniejszym module.
Różne elementy Web Part
ASP.NET 2.0 jest dostarczany z różnymi składnikami Web Part. Zostaną one szczegółowo omówione w późniejszym module.