Podstawy ASP NET 2 0 – tworzenie stron WWW oraz aplikacji Web


ASP.NET Starter Kit
Podstawy ASP.NET 2.0
 tworzenie aplikacji internetowych
Stefan Turalski
iezwykle trudno jest stworzyć artykuł oma-
wiający wszystkie aspekty zastosowania naj-
Plik konfiguracyjny Web.config
Nnowszej platformy programistycznej firmy
Plik Web.config jest plikiem konfiguracyjnym aplikacji
Microsoft. Wszak ASP.NET 2.0 to zestaw wielu narzę-
w formacie XML. Pozwala on modyfikować zachowa-
dzi oraz możliwość skorzystania z całego potencjału
nie aplikacji w takich aspektach jak: bezpieczeństwo, za-
platformy .NET 2.0. Jeszcze trudniej jest przedstawić
rządzanie pamięcią, czy też tryb kompilacji oraz wiele in-
zarówno nowe, jak i istniejące już w poprzednich wer-
nych ustawień dotyczących elementów działania aplika-
sjach elementy środowiska, tak aby zarówno doświad-
cji webowej. Ustawienia modyfikujemy dodając do ele-
czeni programiści jak i osoby stawiające pierwsze kro-
mentu odpowiednie po-
ki mogły czerpać z tego artykułu. Postaraliśmy się
delementy np. . Lista ele-
przedstawić na prostym przykładzie w miarę szero-
mentów jakie może zawierać Web.con fig znajduje się
ki wachlarz możliwości ASP.NET 2.0. Zapraszamy do
w pliku Web.config.comments w katalogu C:\Windows\
podróży  nasz cel to poznanie podstawowych funkcji Microsoft.NET\Framework\WersjaFramework\Config
ASP.NET 2.0 i narzędzi firmy Microsoft wspierających
proces tworzenia aplikacji w tym środowisku.
produkt. Podpowiadanie działa nie tylko wtedy, gdy
Narzędzia kod aplikacji tworzony jest w osobnym pliku, ale tak-
Zanim rozpoczniemy naszą podróż warto się do niej że gdy jest on wymieszany wraz z kodem odpowie-
odpowiednio przygotować, kolekcjonując odpowied- dzialnym za wizualną część strony internetowej. Co
ni ekwipunek. Jak wiadomo, co do sprzętu i narzędzi więcej, IntelliSense wspomaga programistę także
opinii jest tyle, ilu jest ekspertów. Na początek propo- w tworzeniu tagów HTML, czy nawet w skryptów Ja-
nujemy sprawdzony duet: Visual Web Developer 2005 vaScript.
Express Edition oraz SQL Server 2005 Express Edi- " Wraz z platformą ASP.NET dostarczany jest boga-
tion. Dlaczego? Przede wszystkim dlatego, że opro- ty zestaw kontrolek, przydatnych szczególnie przy
gramowanie to możemy nieodpłatnie pobrać ze strony tworzeniu konwencjonalnych rozwiązań, takich jak:
Microsoft. Także dlatego, że wersje te posiadają niemal typowe serwisy, strony internetowe czy standardo-
wszystkie funkcje potrzebne do rozwoju aplikacji inter- we metody uwierzytelniania. Znajdziemy też kom-
netowych. Są wręcz przygotowane z myślą o osobie, ponenty usprawniające proces przeprowadzania
która dopiero rozpoczyna przygodę z ASP.NET. Śro- operacji związanych z pobieraniem danych z wszel-
dowisko IDE pozwalające programiście w sposób łatwy kich zródeł, takich jak bazy danych, pliki XML, itp.
i przyjemny tworzyć aplikacje jest jednym z wielu powo- " W rozwiązanie wbudowany jest również samodziel-
dów, dla jakich początkujący deweloperzy decydują się ny serwer HTTP o ograniczonej funkcjonalności,
na wybór platformy .NET jako podstawy do dalszej na- dzięki czemu tworzenie oprogramowania jest ła-
uki. Pod tym względem środowisko IDE Visual Web De- twiejsze.
veloper nie odstępuje o wiele bardziej rozbudowanym,
ale dostępnym odpłatnie wersjom Visual Studio: Jeśli poważnie myślisz o rozwoju aplikacji .NET pole-
cam jednak pełną wersję środowiska IDE, używane-
" Zawiera graficzny interfejs, który umożliwia tworze- go do rozwoju komercyjnych rozwiązań. Podczas two-
nie interfejsu użytkownika przy pomocy  drag-and- rzenia aplikacji internetowych często korzysta się z ba-
drop . zy danych. Dlatego kolejnym narzędziem przydatnym
" Zastosowano w nim usprawnioną technologię w naszej podróży z ASP.NET jest SQL Server 2005
IntelliSense, która podpowiada programiście skład- Express Edition. Wybór był oczywisty  SQL Server
nię podczas tworzenia kodu. Mechanizm ten został
udoskonalony  w porównaniu z poprzednią wersją
Autor pracuje na stanowisku  projektant oprogramowa-
nia w firmie Silicon & Software Systems Polska. Z za-
interesowaniem przygląda się rozwojowi technologii IT,
dawno już straciwszy nadzieję, że jest w stanie ogarnąć
tę dziedzinę wiedzy.
Kontakt z autorem stefan.turalski@gmail.com
Rysunek 1. Okno Solution Explorer
14 www.sdjournal.org Software Developer s Journal Extra! 20
a sam mechanizm komunikacji jest prosty i oferuje zestaw ko-
Zarządzanie kodem mend, z których najistotniejsze to HEAD, GET i POST. Serwer webo-
wy nasłuchuje na żądania najczęściej na porcie TCP 80. Gdy ser-
Visual Web Developer pozwala Ci wybrać jeden z dwóch mode-
wer otrzyma żądanie typu HEAD, po odpowiednim przygotowaniu,
li zarządzania kodem. Pierwszy model zakłada, że cały kod: HTML
klientowi zostaną odesłane informacje o udostępnionym pod da-
i funkcje wywoływane po stronie serwera znajdują się w tym samym
nym adresem URI dokumencie. Otrzymanie przez serwer żąda-
pliku. W odróżnieniu od ASP.NET 1.1 wersja 2.0 dostarcza pełnego
nia typu GET spowoduje odesłanie oprócz informacji zawierają-
wsparcia dla takiego rozwiązania. Możemy także wybrać opcję roz-
cych opis dokumentu także jego zawartość, natomiast polecenie
dzielenia kodu. Wtedy oprócz pliku .aspx, zostanie utworzony do-
POST uruchamia proces, który przetwarza informacje dostarczone
datkowo powiązany z nim plik .cs lub vb. Jest to rozwiązanie zale-
przez klienta do serwera, a następnie odsyła odpowiedz. Doku-
cane głównie ze względu na czytelność kodu.
ment przesyłany do przeglądarki to najczęściej: strumień znaków
składających się na plik HTML, dane w formacie XML, zawartość
2005 Express Edition posiada bowiem wiele funkcji silnie zintegro- multimedialna taka jak pliki graficzne, animacje, słowem wszystko
wanych ze środowiskiem .NET, jest dostępny nieodpłatnie i stan- z czego zbudowany jest dzisiejszy Internet. W przeszłości serwi-
dardowo dołączony do pakietu instalacyjnego Visual Web Develo- sy internetowe złożone były głównie ze statycznych stron HTML.
per. SQL Server 2005 Express Edition to także pełnowartościowy Znacznie ograniczało to ich funkcjonalność, a zarządzanie tego
silnik bazy danych SQL Server 2005. Mimo pewnych ograniczeń, typu witryną, w miarę jej rozwoju, stawało się bardzo pracochłon-
które stają się istotne dopiero przy wdrażaniu komercyjnych apli- nym zadaniem. W związku z tym pojawiało się wiele rozwiązań
kacji, doskonale sprawdza się w warunkach deweloperskich. pozwalających na dynamiczne generowanie stron HTML. Jed-
nym z tych rozwiązań jest technologia Active Server Pages (ASP)
Przygodę czas zacząć oraz oczywiście jej następca  ASP.NET. Być może znasz już in-
Najtrudniej będzie nam rozpocząć podróż. Część z Was być ne platformy pozwalające na tworzenie dynamicznych serwisów
może jeszcze nie miała doświadczenia w budowaniu aplikacji i zarządzanie nimi w łatwy i przyjemny sposób. Postaramy się
webowych. Może tworzyliście rozwiązania w ASP lub w oparciu jednak zaprezentować, w czym ASP.NET jest lepszy.
o PHP i z zainteresowaniem przypatrujecie się rozwojowi kon- Musimy zdać sobie sprawę z tego, że ASP.NET jest swoistym
kurencyjnego środowiska. A może doskonale znacie rozwiąza- rozszerzeniem zwykłego serwera HTTP. Gdy serwer otrzyma żą-
nia ze świata J2EE lub programowaliście w ASP.NET 1.1 i inte- danie przetwarzania strony, która jest uruchamiana w środowi-
resują Was tylko zmiany wprowadzone w nowej wersji? Jakakol- sku ASP.NET, silnik ASP.NET wywołuje specjalną metodę Pro-
wiek będzie Wasza odpowiedz, wędrówkę najlepiej będzie roz- cessRequest interfejsu IHttpHandler. Metoda ta dynamicznie two-
począć od początku, czyli od samych podstaw tworzenia aplika- rzy specjalną klasę służącą do obsługi żądania pliku aspx. Auto-
cji webowych w technologii ASP 2.0. Trasa będzie jednak na ty- matycznie jest ustanawiany cały kontekst wywołania HTTP oraz
le urozmaicona, że mam nadzieję, że osoby sprawnie posługu- tworzone są obiekty Request i Response służące jako wejście
jące się ASP.NET 1.* także znajdą w tym artykule coś dla siebie. i wyjście w komunikacji środowiska ze światem. Środowisko przy-
Doświadczonych programistów rozwiązań webowych prosimy gotowuje również drzewo kontrolek, które są zadeklarowane we-
jednak o wyrozumiałość. Aby artykuł ten był ogólnie przystępny wnątrz plików stron ASP.NET (aspx). Następnie kolejno, w zależ-
i zrozumiały, zastosowano w nim wiele uogólnień czy też ności od typu żądania, wczytywana i odpowiednio interpretowana
uproszczeń. Sugerowane rozwiązania mogą być zalecane jest zawartość strony. To właśnie dzięki temu, że praktycznie każ-
głównie przy tworzeniu niewielkich serwisów informacyjnych de odwołanie się do serwera może spowodować wygenerowanie
lub wręcz nie zalecane, np. jawne podanie hasła w Connection- nowej, zmodyfikowanej strony, środowiska typu ASP.NET są dziś
String w pliku konfiguracyjnym, który powinien być odpowiednio tak powszechnie stosowane przy tworzeniu zaawansowanych
zaszyfrowany i niedostępny dla postronnych użytkowników. rozwiązań internetowych. Każda kontrolka może być odpowied-
nio modyfikowana w czasie działania aplikacji. Dane pochodzące
Jak działają aplikacje internetowe? od klienta mogą być odpowiednio przetwarzane po stronie ser-
Aplikacje webowe funkcjonują dzięki współpracy i komunikacji wera np. mogą wpływać na proces przetwarzania i wyświetlania
pomiędzy serwerem webowym (HTTP) oraz przeglądarką klien- strony. Proces przetwarzania po stronie serwera umożliwia bar-
ta. Wymiana danych odbywa się przy użyciu protokołu HTTP, dzo łatwą integrację ze zródłami danych i warstwą logiki bizneso-
wej. A przy tym budowanie dynamicznych stron jest stosunkowo
łatwe, dzięki wspomnianym już narzędziom. Jak wykorzystać po-
tencjał tego środowiska postaramy się zaprezentować na poniżej
zaprezentowanym przykładzie.
Rysunek 2. WelcomePage.aspx w widoku Source i Design Rysunek 3. Web Form AddAlbum.aspx po dodaniu kontrolek
Software Developer s Journal Extra! 20 www.sdjournal.org
15
ASP.NET Starter Kit
rakterystycznych dla stron ASP.NET plików o rozszerzeniu aspx,
Listing 1. Obsługa zdarzenia oraz pobranie pliku
plików cs czy vb zawierających kod zródłowy poprzez pliki z ko-
graficznego
dem HTML, pliki graficzne, arkusze styli CSS, pliki XML zawiera-
protected void ButtonAddPhoto_Click(object sender, jące dane konfiguracyjne i wiele, wiele innych.
EventArgs e) { Załóżmy, że posiadamy już stronę HTML, którą chcielibyśmy
string newfilename=""; dołączyć do tworzonej aplikacji ASP.NET 2.0. Możemy to zrobić,
if (FileUpload.HasFile) { klikając prawym klawiszem myszki WebSitePhotoAlbums w So-
try { lution Explorer i wybierając z menu  Add Exiting Item&  Następ-
string fileextention = nie wskazujemy ścieżkę do pliku HTML, który automatycznie
FileUpload.FileName.Substring( zostanie dołączony do projektu. Pozostaje nam tylko dodać pli-
FileUpload.FileName.LastIndexOf('.'), 4); ki graficzne. Obrazy dodajemy do projektu tak samo jak wszyst-
newfilename = System.Guid.NewGuid().ToString()+ kie inne pliki. Aby jednak zachować pewien porządek, środowi-
fileextention; sko umożliwia nam tworzenie w ramach projektu struktury kata-
FileUpload.SaveAs(System.Configuration. logów. Zakładamy zatem nowy folder o nazwie  graph w którym
,
ConfigurationManager.AppSettings[ przechowywać będziemy pliki graficzne. Aby dodać nowy folder
"PhotoResources"].ToString()+" do projektu, z menu kontekstowego WebSitePhotoAlbums wy-
} bieramy opcję  New Folder . Gdy już utworzyliśmy katalog, mo-
catch (Exception ex) { żemy dodać do niego odpowiednie pliki. Po zakończeniu ope-
LabelInfo.Text = "Wystapil blad podczas racji, widok w oknie Solution Explorer powinien prezentować się
zapisywania pliku " + ex.Message; mniej więcej tak, jak na Rysunku 1.
} Możemy teraz podejrzeć, jak wygląda nasza strona. Aby uru-
LabelInfo.Text = "Obrazek pobrano i zapisano chomić projekt, wybieramy opcję menu  Debug->Start Debug-
na serwerze"; ging . Środowisko zareaguje pytaniem, czy stworzyć nowy plik
ViewState.Add("Filename", newfilename); konfiguracyjny na potrzeby naszej aplikacji, czy wolimy urucho-
ImageCover.ImageUrl = " mić aplikację bez funkcji debuggowania. My wybieramy opcję
} else { 
Add a new Web.config file i w oknie przeglądarki możemy oglą-
LabelInfo.Text = "Wskaz lokalizacje obrazka"; dać nasze dzieło. Nic imponującego? Faktycznie, mimo iż Visu-
} al Web Developer udostępnia funkcjonalność związaną z two-
} rzeniem tradycyjnych stron, taką jak kolorowanie składni czy for-
matowanie kodu, to szkoda nie wykorzystać pełni możliwości te-
go środowiska IDE, ograniczając się jedynie do tworzenia stron
Tworzymy aplikację w ASP.NET 2.0 HTML. Dodajmy zatem do projektu prawdziwą stronę ASP.NET.
Aby utworzyć nowy projekt należy z menu File->New Web Site Klikamy prawym klawiszem WebSitePhotoAlbums i korzystamy
wybrać opcję  Empty Web Site oraz podać nazwę projektu  w na- z funkcji 
Add New Item&  . W pojawiającym się oknie wybiera-
szym przypadku WebSitePhotoAlbums. Postaramy się zbudować my  Web Form i podajmy nazwę pliku  WelcomePage.aspx . Po-
prosty webowy serwis służący do prezentowania albumów zdjęć. nownie będziemy mogli wybrać język programowania. Będziemy
Podczas tworzenia projektu mamy możliwość dokonania wy- mogli także zadecydować, czy chcemy aby kod został umiesz-
boru języka programowania. Zamieszczone w tym artykule frag- czony w osobnym pliku. Ze względu na to, że przykład zawiera
menty kodu są stworzone w języku C#. Choć jeśli znasz Visual niewielką ilość kodu, opcję  Place code in separate file pozosta-
Basic.NET nic nie stoi na przeszkodzie, abyś wybrał tę opcję. Du- wiamy niezaznaczoną. Na razie nie wybieramy także opcji  Se-
żą zaletą środowiska .NET jest fakt, że sposób podejścia do roz- lect Master Page  do czego ona służy, dowiemy się w ramce
woju aplikacji ASP.NET jest prawie niezależny od języka progra-  Zarządzanie kode .
mowania. Im lepiej poznasz samą platformę .NET tym szybciej Nowo utworzona strona pojawi się w oknie Solution Explorer.
zorientujesz się, że wszystkie języki programowania, są wykony- Poprzez dwukrotne kliknięcie otwieramy ją w głównym oknie śro-
wane przez wspólny silnik  Common Language Runtime (CLR). dowiska IDE. Strona jest pusta, istnieje wiele sposobów na wy-
Kontynuując konfigurowanie nowego projektu lokację po- pełnienie jej treścią. Wykonać to zadanie możemy edytując za-
zostawimy bez zmian (File System). Szczegółowe informacje wartość strony w domyślnym widoku, jakim jest Source. Wówczas
o tym, jakie możliwości stwarza, a jakie odbiera wybranie takiej modyfikujemy zawartość strony, tak jak zawartość zwykłego pliku
lokacji, zawiera artykuł pod tytułem:  Możliwości umiejscowie-
nia Web Applications oferowane przez Visual Studio 2005 .
Layout
Pusta aplikacja internetowa została utworzona. Pliki wcho-
dzące w skład projektu można zawsze obejrzeć w oknie Solution
Po upuszczeniu kontrolki zostanie ona przesunięta tak, by jej poło-
Explorer. Jeśli twoje środowisko jest skonfigurowane tak, że okno
żenie było dopasowane do położenia poprzedniej kontrolki lub le-
to nie jest widoczne, można je uruchomić korzystając z opcji me-
wego górnego brzegu strony. Taki layout nazywa się  flow i jest do-
nu View->Solution Explorer. Narzędzie to, nie tylko prezentują-
myślnym sposobem rozmieszczenia elementów na stronie. Jednak
ce w widoku drzewa pliki wchodzące w skład naszej aplikacji, ale
jeśli chcemy, aby po upuszczeniu kontrolka znajdowała się dokład-
także pozwalajala na zarządzanie nimi poprzez m.in. dodawa- nie w miejscu, w którym ją położyliśmy, możemy zmienić wartość
własności layout na absolute. W menu Layout->Position->Auto po-
nie nowych elementów, zmianę ich nazwy, czy też przenoszenie
sition Options& należy wybrać opcję  Absolutely positioned .
ich w obrębie projektu. Należy zwrócić uwagę na fakt, że w skład
aplikacji mogą wchodzić różne typy plików: począwszy od cha-
16 www.sdjournal.org Software Developer s Journal Extra! 20
HTML w dowolnym edytorze. Możemy także skopiować fragment
dokumentu HTML czy nawet treści pochodzącej z innej aplika- ViewState
cji np. programu Microsoft Word, zmienić widok na Design i wkle-
ViewState jest jednym z mechanizmów pozwalających przechowy-
ić zawartość schowka na stronę. Dodatkowo trzeba także zacho-
wać informacje zawarte na stronie. Jeśli własność EnableViewState
wać szczególną ostrożność przy linkach oraz obrazkach.
dla kontrolki jest ustawiona na true, jej stan czyli np. tekst który wpi-
Aby strona WelcomePage.aspx była uruchamiana jako
saliśmy do pola TextBox nie znika po zajściu zdarzenia postback 
pierwsza strona naszego serwisu, w jej menu kontekstowym
czyli odesłaniu treści strony do serwera. Należy jednak pamiętać,
wybieramy opcję  Set As Start Page
. I tak oto powstał zalążek
że dla każdej kontrolki obiekt ViewState musi dokonać odpowied-
pierwszego serwisu internetowego. Jednak aby stworzyć taki
niego ukrytego zapisu informacji, co może znacznie zwiększyć ilość
serwis, wystarczy przecież zwykły edytor HTML, więc aby wy-
przesyłanych danych. ViewState działa nie tylko dla kontrolek ale
jaśnić zaletę wykorzystania ASP.NET będziemy musieli zapre- i dla całej strony. Możemy wykorzystać go także do zapisu informa-
zentować kilka bardziej zaawansowanych elementów platformy. cji w postaci pary  klucza i skojarzonej z nim wartości.
Kontrolki
Jedną z zalet, która sprawia, że pisanie aplikacji w ASP.NET jest funkcję pod zdarzenie kliknięcia przycisku ButtonAddPhoto. Jest
tak szybkie, jest zestaw kilkudziesięciu kontrolek gotowych do kilka sposobów, aby to zrobić. Możemy np. zaznaczyć przycisk,
użycia na naszych stronach WWW. Kontrolki, które są przetwa- a następnie w oknie Properties kliknąć symbol błyskawicy.
rzane po stronie serwera HTTP możemy podzielić na dwie gru- W miejsce listy własności kontrolki pojawi się lista zdarzeń. My wy-
py. Są to kontrolki HTMLServer controls, czyli dobrze znane języ- bieramy zdarzenie Click, poprzez dwukrotne kliknięcie pola obok
ka HTML tagi: button, text, radio, select i inne oraz kontrolki Web nazwy zdarzenia. Automatycznie zostaniemy przeniesieni do wi-
Server controls  czyli charakterystyczne dla ASP.NET kontrolki, doku Source, w którym czekać na nas będzie już przygotowany
posiadające funkcje renderujące je do kodu HTML szkielet funkcji. Uzupełnimy ją kodem zgodnie z Listingiem 1.
Oczywiście jeśli chcesz, możesz nadal bezpośrednio w kor- Powyższa funkcja pobiera wskazaną przez użytkownika
dzie używać kontrolek HTML, do których jesteś zapewne przy- ścieżkę do pliku graficznego, który zawiera okładkę albumu. Dla
zwyczajony. Ale warto skorzystać z kontrolek Web Server, po- uproszczenia zakładamy, że to rzeczywiście jest plik graficz-
nieważ mają one dużo większą funkcjonalność. Zawierają mię- ny. Aby nazwy plików nie kolidowały ze sobą, za pomocą kla-
dzy innymi możliwość konfigurowania własności (j.ang. Proper- sy System.GUID generowany jest unikalny klucz, który będzie
ties) które pozwalają nam zarządzać wyglądem, zawartością nową nazwą pliku. Następnie plik jest pobierany i zapisywany
i stanem kontrolki. Każda kontrolka posiada tzw.handlery repre- w folderze  Photo na serwerze. Adres do miejsca na serwerze,
zentujące charakterystyczne dla danej kontrolki zdarzenia (j.ang. w którym chcemy zapisywać pliki jest pobierany z pliku konfigu-
Events), które pozwalają nam określić zachowanie kontrolki w in- racyjnego Web.config. Dlatego w pliku tym dodano element:
terakcji z użytkownikiem. Dysponują także mechanizmem poma-
gające zarządzać stanem kontrolki (j.ang. ViewState).
Aby dodać nową kontrolkę do strony, wystarczy wybrać od-
doku Design jak i Source). Bardziej szczegółowe informacje za-

wiera artykuł  Kontrolki serwerowe dostępne w ASP.NET .
Otwórzmy nowy Web Form o nazwie  AddAlbum i przejdz- Na zakończenie funkcja zapamiętuje nazwę zapisywane-
my do prezentacji strony w widoku Design. Aby ułatwić rozmiesz- go pliku w ViewState i wyświetla zawartość pliku graficznego
czanie kontrolek, najpierw umieszczamy na formularzu tabelę w kontrolce ImageCover.
o 6 wierszach i 3 kolumnach (Layout->Insert Table ). A następ-
nie w odpowiednie miejsca (patrz Rysunek 3) przeciągamy na Master Pages
formularz kilka kontrolek, które umożliwią użytkownikowi poda- Stworzona do tej pory niewielka kolekcja formularzy, sprawia
nie podstawowych informacji o albumie: TextBox(x3), Label(x1), raczej wrażenie chaotycznego zbioru niż aplikacji webowej.
Image(x1), FileUpload(x1), Button (x2). Aby to zmienić, proponujemy wykorzystać kilka dodatkowych
Jak widzimy na Rysunku 3, po prawej stronie okna znajdu- elementów i funkcjonalności specyficznych dla ASP.NET 2.0.
je się narzędzie Properties umożliwiające nam zmianę własno- Serwisy internetowe składają się najczęściej nie z kilku ani
ści kontrolek. Skoro już dodaliśmy kontrolki, wykorzystajmy teraz kilkudziesięciu, ale wręcz z setek podstron. I tu projektant in-
ich możliwości. Na formularzu znajduje się kontrolka FileUpload. terfejsu użytkownika napotyka wiele problemów. Jednym
Ma ona bardzo podobną funkcjonalność uzyskana poprzez frag- z głównych wyzwań jest zapewnienie spójności w obszarze
ment kodu HTML , którą być może już dobrze układu (struktury) strony. Twórcy środowiska ASP.NET opra-
znacie. Gdy użytkownik kliknie przycisk [Browse] podczas prze- cowali dedykowane do tego problemu rozwiązanie. ASP.NET
glądania strony, uruchomi dialog umożliwiający mu wskazanie lo- 2.0 wprowadza nowy mechanizm  tzw. Master Pages.
kacji pliku na dysku. Po kliknięciu OK wybrana ścieżka pojawi się Master page jest szablonem, definiującym ogólny wygląd stro-
w polu tekstowym kontrolki. Obok kontrolki FileUpload znajduje ny w obszarach wspólnych dla wszystkich podstron. Dodatko-
się Button, a poniżej kontrolka Image. Chcemy, aby po kliknięciu wo Master Page wyznacza regiony (j.ang. containers), w któ-
przycisku [Dodaj Album], wskazany za pośrednictwem kontrolki rych umieszczona zostanie zawartość stron podrzędnych. Tak
FileUpload obrazek został przesłany do serwera, a następnie wy- więc efekt końcowy jest jakby złożeniem podstrony z zawarto-
świetlony w kontrolce Image. Musimy zatem podpiąć odpowiednią ścią zdefiniowaną w stronie podrzędnej.
Software Developer s Journal Extra! 20 www.sdjournal.org
17
ASP.NET Starter Kit
dziemy tłumaczyli, co można wpisać do arkuszów styli, ponieważ
Listing 2. Przykładowy ContentPlaceHolder
zakładamy, że już nieraz je tworzyliście. Dodawanie nowych sty-
że w skład Visual Web Developer wchodzi narzędzie Style Builder,
ContentPlaceHolderID="ContentPlaceHolder"> nadal może wpisywać selektory bez pomocy kreatora lub też do-
dać do swojego projektu plik CSS stworzony w innym narzędziu.

Witajcie miłośnicy fotografii. damy także Skin File (
Add New Item&  -> Skin file). Skin file
(& ) tworzy się prawie identycznie jak arkusz styli. Pozwala on jed-

nak na formatowanie kontrolek serwera (takich jak np. Label,
GridView czy Calendar), dlatego lista właściwości wchodzących
w skład stylu jest znacznie szersza i zależy od typu kontrolki.
Jak pozostałe elementy, Master Page dodajemy do aplikacji I tak oto temat został stworzony. Teraz wystarczy tylko za-
korzystając z menu  Add New Item Master Page edytuje się jak deklarować jego użycie na stronie. Można to zrobić na kilka
.
zwykły plik html, tak więc tworzenie go nie powinno przysporzyć sposobów, w zależności od tego czy chcemy zastosować te-
Wam trudności. Trzeba tylko pamiętać, aby odpowiednio wy- mat do całej aplikacji, czy tylko do wybranych stron. My za-
brać miejsce dla elementu ContentPlaceHolder  to w tym miej- stosujemy wariant pierwszy. Aby podpiąć temat pod wszystkie
scu pojawiać się będzie zawartość stron podrzędnych względem strony dodajemy odpowiedni element do pliku Web.config:
Master Page. Jak już się pewnie domyślacie, aby stworzyć stro-
nę podrzędną wystarczy dodając nowy Web Form zaznaczyć
opcję  Select Master Page i wskazać odpowiedni plik. Jednak
ponieważ nasz serwis zawiera już strony, chcielibyśmy je także Po dokonaniu powyższych operacji wszystkie strony wcho-
uwzględnić podczas wykorzystywania mechanizmów Master Pa- dzące w skład aplikacji powinny zostać sformatowane.
ge. Jest to zadanie nieco trudniejsze, aczkolwiek nie niewykonal- Zastosowanie tematów ułatwia także personalizację apli-
ne. Jako przykład wezmy plik  WelcomePage.aspx . Po pierwsze kacji webowych, czyli zmianę wyglądu aplikacji w zależności
musimy dodać w dyrektywie Page odpowiednia deklarację: od preferencji użytkownika. W takich sytuacjach twórca apli-
kacji tworzy kilka tematów, aby dać użytkownikowi możliwość
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master"%> wyboru. Ale to już wykracza poza temat tego artykułu.
Dodatkowy warunek to taki, że Content file nie może zawierać Nawigacja
takich elementów html jak: , ,
, a treść, którą Mimo, iż w zakres naszego serwisu wchodzi już całkiem pokaz-
chcemy wyświetlić, powinna zawierać się w elemencie tent>. Zatem najlepiej jest wyciąć właściwy fragment kodu, usu- kuje bowiem funkcjonalności, która umożliwiałaby nam swobod-
wając całą resztę zbytecznych elementów HTML. A następnie ne poruszanie się między stronami. Przy użyciu kilku elementów
dodać element z odpowiednio ustawionym atry- wchodzących w skład ASP.NET 2.0 możemy szybko umożliwić
butem ContentPlaceHolderID (nazwa powinna być taka sama, jak sprawną nawigację po stronie. Zaczynamy od dodania do pro-
nazwa odpowiedniego ContentPlaceHolder w pliku MasterPage). jektu nowego elementu Site Map. Site Map jest to plik XML o roz-
Po przekształceniu na Content file, plik WelcomePage.aspx wy- szerzeniu sitemap przechowujący, jak sama nazwa mówi, mapę
gląda jak na Listingu 2. strony. Każda strona, do której chcemy umożliwić nawigację, jest
reprezentowana w postaci elementu . Zawartość
Theme i skin naszego pliku Web.sitemap jest zaprezentowana na Listingu 4.
Wykorzystanie Master Pages nie jest jedynym mechani- Gdy stworzyliśmy już mapę strony, pozostało nam tylko udo-
zmem ułatwiającym developerowi zachowanie spójnego tzw. stępnienie elementu prezentującego tą mapę. Element ten pro-
 Look&Feel aplikacji. Aby ułatwić zarządzanie układem strony ponuję dodać do Master Page, tak aby nawigacja była dostępna
oraz jej szatą graficzną w ASP.NET 2.0 wprowadzono dwa nowe
mechanizmy: Themes i Skins. Na temat, bo tak pozwolę sobie
Listing 3. Przykładowy fragment pliku skin
przetłumaczyć Theme, składać się mogą arkusze styli, obrazki,
XSLT lub też skins. Skin to specjalny rodzaj arkusza stylów dedy- kowany do formatowania wyglądu kontrolek serwerowych. Funk- Font-Bold="True" ForeColor="White"/>
cjonalność powyższych mechanizmów najłatwiej będzie zrozu- mieć, obserwując je w działaniu. BorderColor="#6d7894" BorderStyle="Double"
Aby stworzyć nowy temat w Solution Explorer zaznacza- BorderWidth="3px" CellSpacing="1" ForeColor="DimGray">
my korzeń strony i wybieramy  Add ASP.NET Folde r->|Theme. W ten sposób do projektu zostanie dodany folder App_Theme BorderColor=Gray BorderStyle=Solid BorderWidth=5px />
wraz z przykładowym, ale pustym tematem. Zmieńmy jego na- zwę na  Szaruga . Temat, jak już wspomniano, może składać się ForeColor="White" />
z różnych typów plików. Na początek dodajmy do naszego tema-

tu zwykły i dobrze znany arkusz styli (j.ang. Style Sheet). Nie bę-
18 www.sdjournal.org Software Developer s Journal Extra! 20
na każdej podstronie. Gdy na formularzu Master Page umieści-
Listing 5. Konfiguracja GridView
my element TreeView, automatycznie otworzy się okienko  Tre-
eView Tasks Z listy  Choose Data Source wybieramy opcję  New .
Data, a na pojawiającym się oknie  Data Source Configuration AutoGenerateColumns="False"
Wizard opcję  Site Map Po czym zatwierdzamy wybór. Utworzo- DataSourceID="SqlDataSource1" >
.
na przez nas mapa strony zostanie automatycznie wyszukana
i podpięta pod TreeView. Aż trudno uwierzyć, że to takie proste. Zachęcam do klikania niepozornie wyglądających małych HeaderText="Okladka" ReadOnly="True"
czarnych strzałek przy kontrolkach. Zawierają one wiele intere- NullImageUrl="~/graph/DefaultCover.jpg"
sujących kreatorów, takich jak np.  Auto Format&  który umożliwia DataImageUrlFormatString="~/Photo/{0} " >
wybór jednego z kilkunastu szablonów formatowania kontrolki.

Wstęp do ADO.NET
Korzystając z zaprezentowanych do tej pory elementów skła-
dających się na ASP.NET 2.0 można stworzyć serwis interne-

towy o bogatej funkcjonalności. Jednak na zakończenie chcie-

libyśmy jeszcze pokazać, jaki dodatkowy potencjał stwarza
wykorzystanie w aplikacji bazy danych.
Na początku musimy stworzyć bazę, korzystając przy tym nych narzędzi. Zatem tym razem zaprezentujemy, jak wyglą-
rzecz jasna z SQL Server Express Edition. Jak wspominali- da fragment kodu w widoku Source.
śmy SQL Express jest silnie zintegrowany z aplikacją Visu- Na Listingu 5 widzimy przykładową konfigurację Gridview.
al Web Developer. Środowisko IDE będziemy wykorzystywali W zademonstrowanym fragmencie kodu pominięto formato-
do wykonywania wszystkich podstawowych operacji na bazie wanie samego elementu GridView, ponieważ jest ono już za-
danych. Aby stworzyć nową bazę, dodajemy do projektu fol- deklarowane w stworzonym uprzednio pliku skin (patrz Listing
der App_Data (menu 
Add ASP.NET Folder ). Folder ten poja- 3). Do zaprezentowania wybrano kolumny Title, Author oraz
wi się w oknie Solution Explorer. W jego menu kontekstowym Cover - pole Cover zawiera nazwę pliku graficznego znajdu-
znajduje się opcja  Add New Item
, wybieramy SQL Database jącego się na serwerze. Atrybut DataImageUrlFormatString po-
i wpisujemy nazwę bazy  dbAlbums.mdf zwala stworzyć adres url obrazka - wstawiając wartość po-
.
Ponieważ obsługa baz danych leży poza obszarem tego ar- la DataImageUrlField w miejsce {0}. Dodatkowo dzięki zasto-
tykułu, pominiemy etap dodawania do bazy tabel i wypełniania sowaniu wczytywany obrazek
ich danymi. Podpowiemy tylko, że we wszelkich operacjach wy- jest proporcjonalnie skalowany.
konywanych na bazie danych pomocne jest narzędzie Databa- I tak oto praktycznie bez konieczności pisania kodu, uda-
se Explorer (dostępne w menu View). Zakładamy, że mamy już ło nam się połączyć z serwerem i zaprezentować dane z ba-
wypełnioną danymi bazę danych dbAlbums zawierająca tabelę zy danych. To oczywiście tylko minimalny wycinek z tego, co
tblAlbum. oferuje ASP.NET 2.0 w kwestii obsługi bazy danych. W skład
Do prezentacji danych służyć nam będzie nowy Web Form platformy wchodzi wiele mechanizmów pozwalających na do-
  TopAlbums.aspx . Aby wyświetlić na formularzu zawartość dawanie, edycję i usuwanie danych.
tabeli tblAlbum, wystarczy chwycić tabelę w oknie Databa-
se Explorer i przeciągnąć ją na odpowiednie miejsce w Web Publikujemy aplikację
Form. Kontrolka GridView, który pojawi się na formularzu, jest W sekcji dotyczącej ekwipunku wspomniano, że Visual Web
wierną reprezentacją danych znajdujących się w wybranej ta- Developer posiada wbudowany lokalny serwer HTTP (Cassini).
beli. Wiadomo jednak, że do prezentacji chcielibyśmy wy- Jednak jest on przeznaczony tylko do wspomagania procesu
brać tylko kilka kolumn. Edycji kolumn można dokonać w wi- rozwoju aplikacji Web i prędzej czy pózniej i tak zaistnieje po-
doku Design, jednak GridView jest kontrolką o bardzo rozbu- trzeba umieszczenia naszej aplikacji na pełnowartościowym
dowanej funkcjonalności i do jej formatowania służy wiele roż- serwerze HTTP. W ASP.NET rolę tą pełni IIS (Internet Infor-
mation Services).
O tym jak przeprowadzić poprawną konfigurację serwera
Listing 4. Mapa strony Web.sitemap
IIS przeczytasz w artykule  Aplikacje ASP.NET na platformie
Internet Information Services
Podsumowanie
I tak oto od początku do końca stworzyliśmy naszą pierw-
title="Strona Powitalna" /> Web Developer, SQL Server 2005 Express Edition i środowi-
title="Dodaj Album" /> może ambitne aczkolwiek pozwoliły nam poznać te z elemen-
title="Najlepsze Albumy" /> go programisty. Z czasem z pewnością Twój apetyt na wiedzę
o ASP.NET będzie rósł. Mamy nadzieję, że pomoże Ci w tym
ten numer naszego czasopisma. n
Software Developer s Journal Extra! 20 www.sdjournal.org
19


Wyszukiwarka

Podobne podstrony:
kurs PODSTAWY TWORZENIA STRON WWW
Tworzenie stron WWW Ćwiczenia praktyczne Wydanie III
Tworzenie stron WWW we Flashu CS4 CS4 PL Projekty twfcs4
informatyka tworzenie stron www kurs wydanie iii radoslaw sokol ebook
04 tworzenie stron www
Tworzenie stron WWW z wykorzystaniem Ajaksa Projekty
Tworzenie stron www wyd 2
ABC tworzenia stron WWW
ABC tworzenia stron WWW Wydanie II

więcej podobnych podstron