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

background image

14

ASP.NET Starter Kit

www.sdjournal.org

Software Developer’s Journal Extra! 20

Stefan Turalski

Podstawy ASP.NET 2.0

– tworzenie aplikacji internetowych

N

iezwykle trudno jest stworzyć artykuł oma-

wiający wszystkie aspekty zastosowania naj-

nowszej platformy programistycznej firmy

Microsoft. Wszak ASP.NET 2.0 to zestaw wielu narzę-

dzi oraz możliwość skorzystania z całego potencjału

platformy .NET 2.0. Jeszcze trudniej jest przedstawić

zarówno nowe, jak i istniejące już w poprzednich wer-

sjach elementy środowiska, tak aby zarówno doświad-

czeni programiści jak i osoby stawiające pierwsze kro-

ki mogły czerpać z tego artykułu. Postaraliśmy się

przedstawić na prostym przykładzie w miarę szero-

ki wachlarz możliwości ASP.NET 2.0. Zapraszamy do

podróży – nasz cel to poznanie podstawowych funkcji

ASP.NET 2.0 i narzędzi firmy Microsoft wspierających

proces tworzenia aplikacji w tym środowisku.

Narzędzia

Zanim rozpoczniemy naszą podróż warto się do niej

odpowiednio przygotować, kolekcjonując odpowied-

ni ekwipunek. Jak wiadomo, co do sprzętu i narzędzi

opinii jest tyle, ilu jest ekspertów. Na początek propo-

nujemy sprawdzony duet: Visual Web Developer 2005
Express Edition
oraz SQL Server 2005 Express Edi-
tion
. Dlaczego? Przede wszystkim dlatego, że opro-

gramowanie to możemy nieodpłatnie pobrać ze strony

Microsoft. Także dlatego, że wersje te posiadają niemal

wszystkie funkcje potrzebne do rozwoju aplikacji inter-

netowych. Są wręcz przygotowane z myślą o osobie,

która dopiero rozpoczyna przygodę z ASP.NET. Śro-

dowisko IDE pozwalające programiście w sposób łatwy

i przyjemny tworzyć aplikacje jest jednym z wielu powo-

dów, dla jakich początkujący deweloperzy decydują się

na wybór platformy .NET jako podstawy do dalszej na-

uki. Pod tym względem środowisko IDE Visual Web De-
veloper
nie odstępuje o wiele bardziej rozbudowanym,

ale dostępnym odpłatnie wersjom Visual Studio:

• Zawiera graficzny interfejs, który umożliwia tworze-

nie interfejsu użytkownika przy pomocy „drag-and-
drop
”.

• Zastosowano w nim usprawnioną technologię

IntelliSense, która podpowiada programiście skład-

nię podczas tworzenia kodu. Mechanizm ten został

udoskonalony – w porównaniu z poprzednią wersją

produkt. Podpowiadanie działa nie tylko wtedy, gdy

kod aplikacji tworzony jest w osobnym pliku, ale tak-

że gdy jest on wymieszany wraz z kodem odpowie-

dzialnym za wizualną część strony internetowej. Co

więcej, IntelliSense wspomaga programistę także

w tworzeniu tagów HTML, czy nawet w skryptów Ja-
vaScript
.

• Wraz z platformą ASP.NET dostarczany jest boga-

ty zestaw kontrolek, przydatnych szczególnie przy

tworzeniu konwencjonalnych rozwiązań, takich jak:

typowe serwisy, strony internetowe czy standardo-

we metody uwierzytelniania. Znajdziemy też kom-

ponenty usprawniające proces przeprowadzania

operacji związanych z pobieraniem danych z wszel-

kich źródeł, takich jak bazy danych, pliki XML, itp.

• W rozwiązanie wbudowany jest również samodziel-

ny serwer HTTP o ograniczonej funkcjonalności,

dzięki czemu tworzenie oprogramowania jest ła-

twiejsze.

Jeśli poważnie myślisz o rozwoju aplikacji .NET pole-

cam jednak pełną wersję środowiska IDE, używane-

go do rozwoju komercyjnych rozwiązań. Podczas two-

rzenia aplikacji internetowych często korzysta się z ba-

zy danych. Dlatego kolejnym narzędziem przydatnym

w naszej podróży z ASP.NET jest SQL Server 2005
Express Edition
. Wybór był oczywisty – SQL Server

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

Plik konfiguracyjny Web.config

Plik Web.config jest plikiem konfiguracyjnym aplikacji
w formacie XML. Pozwala on modyfikować zachowa-
nie aplikacji w takich aspektach jak: bezpieczeństwo, za-
rządzanie pamięcią, czy też tryb kompilacji oraz wiele in-
nych ustawień dotyczących elementów działania aplika-
cji webowej. Ustawienia modyfikujemy dodając do ele-
mentu

<configuration><system.web>

odpowiednie po-

delementy np.

<trace enabled=„true”/>

. Lista ele-

mentów jakie może zawierać Web.con fig znajduje się
w pliku Web.config.comments w katalogu C:\Windows\
Microsoft.NET\Framework\WersjaFramework\Config

background image

15

www.sdjournal.org

Software Developer’s Journal Extra! 20

2005 Express Edition posiada bowiem wiele funkcji silnie zintegro-

wanych ze środowiskiem .NET, jest dostępny nieodpłatnie i stan-

dardowo dołączony do pakietu instalacyjnego Visual Web Develo-
per
. SQL Server 2005 Express Edition to także pełnowartościowy

silnik bazy danych SQL Server 2005. Mimo pewnych ograniczeń,

które stają się istotne dopiero przy wdrażaniu komercyjnych apli-

kacji, doskonale sprawdza się w warunkach deweloperskich.

Przygodę czas zacząć

Najtrudniej będzie nam rozpocząć podróż. Część z Was być

może jeszcze nie miała doświadczenia w budowaniu aplikacji

webowych. Może tworzyliście rozwiązania w ASP lub w oparciu

o PHP i z zainteresowaniem przypatrujecie się rozwojowi kon-

kurencyjnego środowiska. A może doskonale znacie rozwiąza-

nia ze świata J2EE lub programowaliście w ASP.NET 1.1 i inte-

resują Was tylko zmiany wprowadzone w nowej wersji? Jakakol-

wiek będzie Wasza odpowiedź, wędrówkę najlepiej będzie roz-

począć od początku, czyli od samych podstaw tworzenia aplika-

cji webowych w technologii ASP 2.0. Trasa będzie jednak na ty-

le urozmaicona, że mam nadzieję, że osoby sprawnie posługu-

jące się ASP.NET 1.* także znajdą w tym artykule coś dla siebie.

Doświadczonych programistów rozwiązań webowych prosimy

jednak o wyrozumiałość. Aby artykuł ten był ogólnie przystępny

i zrozumiały, zastosowano w nim wiele uogólnień czy też

uproszczeń. Sugerowane rozwiązania mogą być zalecane

głównie przy tworzeniu niewielkich serwisów informacyjnych

lub wręcz nie zalecane, np. jawne podanie hasła w Connection-
String
w pliku konfiguracyjnym, który powinien być odpowiednio

zaszyfrowany i niedostępny dla postronnych użytkowników.

Jak działają aplikacje internetowe?

Aplikacje webowe funkcjonują dzięki współpracy i komunikacji

pomiędzy serwerem webowym (HTTP) oraz przeglądarką klien-

ta. Wymiana danych odbywa się przy użyciu protokołu HTTP,

a sam mechanizm komunikacji jest prosty i oferuje zestaw ko-

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-

wer otrzyma żądanie typu

HEAD

, po odpowiednim przygotowaniu,

klientowi zostaną odesłane informacje o udostępnionym pod da-

nym adresem URI dokumencie. Otrzymanie przez serwer żąda-

nia typu

GET

spowoduje odesłanie oprócz informacji zawierają-

cych opis dokumentu także jego zawartość, natomiast polecenie

POST

uruchamia proces, który przetwarza informacje dostarczone

przez klienta do serwera, a następnie odsyła odpowiedź. Doku-

ment przesyłany do przeglądarki to najczęściej: strumień znaków

składających się na plik HTML, dane w formacie XML, zawartość

multimedialna taka jak pliki graficzne, animacje, słowem wszystko

z czego zbudowany jest dzisiejszy Internet. W przeszłości serwi-

sy internetowe złożone były głównie ze statycznych stron HTML.

Znacznie ograniczało to ich funkcjonalność, a zarządzanie tego

typu witryną, w miarę jej rozwoju, stawało się bardzo pracochłon-

nym zadaniem. W związku z tym pojawiało się wiele rozwiązań

pozwalających na dynamiczne generowanie stron HTML. Jed-

nym z tych rozwiązań jest technologia Active Server Pages (ASP)

oraz oczywiście jej następca – ASP.NET. Być może znasz już in-

ne platformy pozwalające na tworzenie dynamicznych serwisów

i zarządzanie nimi w łatwy i przyjemny sposób. Postaramy się

jednak zaprezentować, w czym ASP.NET jest lepszy.

Musimy zdać sobie sprawę z tego, że ASP.NET jest swoistym

rozszerzeniem zwykłego serwera HTTP. Gdy serwer otrzyma żą-

danie przetwarzania strony, która jest uruchamiana w środowi-

sku ASP.NET, silnik ASP.NET wywołuje specjalną metodę Pro-
cessRequest
interfejsu IHttpHandler. Metoda ta dynamicznie two-

rzy specjalną klasę służącą do obsługi żądania pliku aspx. Auto-

matycznie jest ustanawiany cały kontekst wywołania HTTP oraz

tworzone są obiekty Request i Response służące jako wejście

i wyjście w komunikacji środowiska ze światem. Środowisko przy-

gotowuje również drzewo kontrolek, które są zadeklarowane we-

wnątrz plików stron ASP.NET (aspx). Następnie kolejno, w zależ-

ności od typu żądania, wczytywana i odpowiednio interpretowana

jest zawartość strony. To właśnie dzięki temu, że praktycznie każ-

de odwołanie się do serwera może spowodować wygenerowanie

nowej, zmodyfikowanej strony, środowiska typu ASP.NET są dziś

tak powszechnie stosowane przy tworzeniu zaawansowanych

rozwiązań internetowych. Każda kontrolka może być odpowied-

nio modyfikowana w czasie działania aplikacji. Dane pochodzące

od klienta mogą być odpowiednio przetwarzane po stronie ser-

wera np. mogą wpływać na proces przetwarzania i wyświetlania

strony. Proces przetwarzania po stronie serwera umożliwia bar-

dzo łatwą integrację ze źró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.

Zarządzanie kodem

Visual Web Developer pozwala Ci wybrać jeden z dwóch mode-
li zarządzania kodem. Pierwszy model zakłada, że cały kod: HTML
i funkcje wywoływane po stronie serwera znajdują się w tym samym
pliku. W odróżnieniu od ASP.NET 1.1 wersja 2.0 dostarcza pełnego
wsparcia dla takiego rozwiązania. Możemy także wybrać opcję roz-
dzielenia kodu. Wtedy oprócz pliku .aspx, zostanie utworzony do-
datkowo powiązany z nim plik .cs lub vb. Jest to rozwiązanie zale-
cane głównie ze względu na czytelność kodu.

Rysunek 2.

WelcomePage.aspx w widoku Source i Design

Rysunek 3.

Web Form AddAlbum.aspx po dodaniu kontrolek

background image

16

ASP.NET Starter Kit

www.sdjournal.org

Software Developer’s Journal Extra! 20

Tworzymy aplikację w ASP.NET 2.0

Aby utworzyć nowy projekt należy z menu File->New Web Site

wybrać opcję ‘Empty Web Site’ oraz podać nazwę projektu – w na-

szym przypadku WebSitePhotoAlbums. Postaramy się zbudować

prosty webowy serwis służący do prezentowania albumów zdjęć.

Podczas tworzenia projektu mamy możliwość dokonania wy-

boru języka programowania. Zamieszczone w tym artykule frag-

menty kodu są stworzone w języku C#. Choć jeśli znasz Visual
Basic.NET
nic nie stoi na przeszkodzie, abyś wybrał tę opcję. Du-

żą zaletą środowiska .NET jest fakt, że sposób podejścia do roz-

woju aplikacji ASP.NET jest prawie niezależny od języka progra-

mowania. Im lepiej poznasz samą platformę .NET tym szybciej

zorientujesz się, że wszystkie języki programowania, są wykony-

wane przez wspólny silnik – Common Language Runtime (CLR).

Kontynuując konfigurowanie nowego projektu lokację po-

zostawimy bez zmian (File System). Szczegółowe informacje

o tym, jakie możliwości stwarza, a jakie odbiera wybranie takiej

lokacji, zawiera artykuł pod tytułem: „Możliwości umiejscowie-

nia Web Applications oferowane przez Visual Studio 2005”.

Pusta aplikacja internetowa została utworzona. Pliki wcho-

dzące w skład projektu można zawsze obejrzeć w oknie Solution
Explorer
. Jeśli twoje środowisko jest skonfigurowane tak, że okno

to nie jest widoczne, można je uruchomić korzystając z opcji me-

nu View->Solution Explorer. Narzędzie to, nie tylko prezentują-

ce w widoku drzewa pliki wchodzące w skład naszej aplikacji, ale

także pozwalajala na zarządzanie nimi poprzez m.in. dodawa-

nie nowych elementów, zmianę ich nazwy, czy też przenoszenie

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-

rakterystycznych dla stron ASP.NET plików o rozszerzeniu aspx,

plików cs czy vb zawierających kod źródłowy poprzez pliki z ko-

dem HTML, pliki graficzne, arkusze styli CSS, pliki XML zawiera-

jące dane konfiguracyjne i wiele, wiele innych.

Załóżmy, że posiadamy już stronę HTML, którą chcielibyśmy

dołączyć do tworzonej aplikacji ASP.NET 2.0. Możemy to zrobić,

klikając prawym klawiszem myszki WebSitePhotoAlbums w So-
lution Explorer
i wybierając z menu ‘Add Exiting Item…’ Następ-

nie wskazujemy ścieżkę do pliku HTML, który automatycznie

zostanie dołączony do projektu. Pozostaje nam tylko dodać pli-

ki graficzne. Obrazy dodajemy do projektu tak samo jak wszyst-

kie inne pliki. Aby jednak zachować pewien porządek, środowi-

sko umożliwia nam tworzenie w ramach projektu struktury kata-

logów. Zakładamy zatem nowy folder o nazwie „graph”, w którym

przechowywać będziemy pliki graficzne. Aby dodać nowy folder

do projektu, z menu kontekstowego WebSitePhotoAlbums wy-

bieramy opcję ‘New Folder’. Gdy już utworzyliśmy katalog, mo-

żemy dodać do niego odpowiednie pliki. Po zakończeniu ope-

racji, widok w oknie Solution Explorer powinien prezentować się

mniej więcej tak, jak na Rysunku 1.

Możemy teraz podejrzeć, jak wygląda nasza strona. Aby uru-

chomić projekt, wybieramy opcję menu „Debug->Start Debug-
ging
”. Środowisko zareaguje pytaniem, czy stworzyć nowy plik

konfiguracyjny na potrzeby naszej aplikacji, czy wolimy urucho-

mić aplikację bez funkcji debuggowania. My wybieramy opcję

Add a new Web.config file’ i w oknie przeglądarki możemy oglą-

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

HTML. Dodajmy zatem do projektu prawdziwą stronę ASP.NET.

Klikamy prawym klawiszem WebSitePhotoAlbums i korzystamy

z funkcji ‘Add New Item…’. W pojawiającym się oknie wybiera-

my ‘Web Form’ i podajmy nazwę pliku „WelcomePage.aspx”. Po-

nownie będziemy mogli wybrać język programowania. Będziemy

mogli także zadecydować, czy chcemy aby kod został umiesz-

czony w osobnym pliku. Ze względu na to, że przykład zawiera

niewielką ilość kodu, opcję ‘Place code in separate file’ pozosta-

wiamy niezaznaczoną. Na razie nie wybieramy także opcji ‘Se-
lect Master Page’ – do
czego ona służy, dowiemy się w ramce

Zarządzanie kode”.

Nowo utworzona strona pojawi się w oknie Solution Explorer.

Poprzez dwukrotne kliknięcie otwieramy ją w głównym oknie śro-

dowiska IDE. Strona jest pusta, istnieje wiele sposobów na wy-

pełnienie jej treścią. Wykonać to zadanie możemy edytując za-

wartość strony w domyślnym widoku, jakim jest Source. Wówczas

modyfikujemy zawartość strony, tak jak zawartość zwykłego pliku

Listing 1.

Obsługa zdarzenia oraz pobranie pliku

graficznego

protected

void

ButtonAddPhoto_Click

(

object

sender

,

EventArgs

e

)

{

string

newfilename

=

""

;

if

(

FileUpload

.

HasFile

)

{

try

{

string

fileextention

=

FileUpload

.

FileName

.

Substring

(

FileUpload

.

FileName

.

LastIndexOf

(

'.'

)

,

4

);

newfilename

=

System

.

Guid

.

NewGuid

()

.

ToString

()+

fileextention

;

FileUpload

.

SaveAs

(

System

.

Configuration

.

ConfigurationManager

.

AppSettings

[

"PhotoResources"

]

.

ToString

()+

"

}

catch

(

Exception

ex

)

{

LabelInfo

.

Text

=

"Wystapil blad podczas

zapisywania pliku "

+

ex

.

Message

;

}

LabelInfo

.

Text

=

"Obrazek pobrano i zapisano

na serwerze"

;

ViewState

.

Add

(

"Filename"

,

newfilename

);

ImageCover

.

ImageUrl

=

"

}

else

{

LabelInfo

.

Text

=

"Wskaz lokalizacje obrazka"

;

}

}

Layout

Po upuszczeniu kontrolki zostanie ona przesunięta tak, by jej poło-
żenie było dopasowane do położenia poprzedniej kontrolki lub le-
wego górnego brzegu strony. Taki layout nazywa się ‘flow’ i jest do-
myślnym sposobem rozmieszczenia elementów na stronie. Jednak
jeśli chcemy, aby po upuszczeniu kontrolka znajdowała się dokład-
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-
sition Options
… należy wybrać opcję ‘Absolutely positioned’.

background image

17

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-

cji np. programu Microsoft Word, zmienić widok na Design i wkle-

ić zawartość schowka na stronę. Dodatkowo trzeba także zacho-

wać szczególną ostrożność przy linkach oraz obrazkach.

Aby strona WelcomePage.aspx była uruchamiana jako

pierwsza strona naszego serwisu, w jej menu kontekstowym

wybieramy opcję ‘Set As Start Page’. I tak oto powstał zalążek

pierwszego serwisu internetowego. Jednak aby stworzyć taki

serwis, wystarczy przecież zwykły edytor HTML, więc aby wy-

jaśnić zaletę wykorzystania ASP.NET będziemy musieli zapre-

zentować kilka bardziej zaawansowanych elementów platformy.

Kontrolki

Jedną z zalet, która sprawia, że pisanie aplikacji w ASP.NET jest

tak szybkie, jest zestaw kilkudziesięciu kontrolek gotowych do

użycia na naszych stronach WWW. Kontrolki, które są przetwa-

rzane po stronie serwera HTTP możemy podzielić na dwie gru-

py. Są to kontrolki HTMLServer controls, czyli dobrze znane języ-

ka HTML tagi: button, text, radio, select i inne oraz kontrolki Web
Server controls
– czyli charakterystyczne dla ASP.NET kontrolki,

posiadające funkcje renderujące je do kodu HTML

Oczywiście jeśli chcesz, możesz nadal bezpośrednio w kor-

dzie używać kontrolek HTML, do których jesteś zapewne przy-

zwyczajony. Ale warto skorzystać z kontrolek Web Server, po-

nieważ mają one dużo większą funkcjonalność. Zawierają mię-

dzy innymi możliwość konfigurowania własności (j.ang. Proper-
ties
) które pozwalają nam zarządzać wyglądem, zawartością

i stanem kontrolki. Każda kontrolka posiada tzw.handlery repre-

zentujące charakterystyczne dla danej kontrolki zdarzenia (j.ang.
Events), które pozwalają nam określić zachowanie kontrolki w in-

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-

powiedni symbol z listy dostępnej w oknie Toolbox a następnie

przeciągnąć ją na Web Form (można to zrobić zarówno w wi-

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 przejdź-

my do prezentacji strony w widoku Design. Aby ułatwić rozmiesz-

czanie kontrolek, najpierw umieszczamy na formularzu tabelę

o 6 wierszach i 3 kolumnach (Layout->Insert Table ). A następ-

nie w odpowiednie miejsca (patrz Rysunek 3) przeciągamy na

formularz kilka kontrolek, które umożliwią użytkownikowi poda-

nie podstawowych informacji o albumie: TextBox(x3), Label(x1),
Image(x1), FileUpload(x1), Button (x2).

Jak widzimy na Rysunku 3, po prawej stronie okna znajdu-

je się narzędzie Properties umożliwiające nam zmianę własno-

ści kontrolek. Skoro już dodaliśmy kontrolki, wykorzystajmy teraz

ich możliwości. Na formularzu znajduje się kontrolka FileUpload.

Ma ona bardzo podobną funkcjonalność uzyskana poprzez frag-

ment kodu HTML

<input type="file">

, którą być może już dobrze

znacie. Gdy użytkownik kliknie przycisk [Browse] podczas prze-

glądania strony, uruchomi dialog umożliwiający mu wskazanie lo-

kacji pliku na dysku. Po kliknięciu OK wybrana ścieżka pojawi się

w polu tekstowym kontrolki. Obok kontrolki FileUpload znajduje

się Button, a poniżej kontrolka Image. Chcemy, aby po kliknięciu

przycisku [Dodaj Album], wskazany za pośrednictwem kontrolki
FileUpload obrazek został przesłany do serwera, a następnie wy-

świetlony w kontrolce Image. Musimy zatem podpiąć odpowiednią

funkcję pod zdarzenie kliknięcia przycisku

ButtonAddPhoto

. Jest

kilka sposobów, aby to zrobić. Możemy np. zaznaczyć przycisk,

a następnie w oknie Properties kliknąć symbol błyskawicy.

W miejsce listy własności kontrolki pojawi się lista zdarzeń. My wy-

bieramy zdarzenie Click, poprzez dwukrotne kliknięcie pola obok

nazwy zdarzenia. Automatycznie zostaniemy przeniesieni do wi-

doku Source, w którym czekać na nas będzie już przygotowany

szkielet funkcji. Uzupełnimy ją kodem zgodnie z Listingiem 1.

Powyższa funkcja pobiera wskazaną przez użytkownika

ścieżkę do pliku graficznego, który zawiera okładkę albumu. Dla

uproszczenia zakładamy, że to rzeczywiście jest plik graficz-

ny. Aby nazwy plików nie kolidowały ze sobą, za pomocą kla-

sy System.GUID generowany jest unikalny klucz, który będzie

nową nazwą pliku. Następnie plik jest pobierany i zapisywany

w folderze „Photo” na serwerze. Adres do miejsca na serwerze,

w którym chcemy zapisywać pliki jest pobierany z pliku konfigu-

racyjnego Web.config. Dlatego w pliku tym dodano element:

<appSettings>
<add key="PhotoResources" value="C:\Documents and Settings\
Developer\My Documents\Visual Studio 2005\WebSites\
WebSitePhoto\"/>
</appSettings>

Na zakończenie funkcja zapamiętuje nazwę zapisywane-

go pliku w ViewState i wyświetla zawartość pliku graficznego

w kontrolce ImageCover.

Master Pages

Stworzona do tej pory niewielka kolekcja formularzy, sprawia

raczej wrażenie chaotycznego zbioru niż aplikacji webowej.

Aby to zmienić, proponujemy wykorzystać kilka dodatkowych

elementów i funkcjonalności specyficznych dla ASP.NET 2.0.

Serwisy internetowe składają się najczęściej nie z kilku ani

kilkudziesięciu, ale wręcz z setek podstron. I tu projektant in-

terfejsu użytkownika napotyka wiele problemów. Jednym

z głównych wyzwań jest zapewnienie spójności w obszarze

układu (struktury) strony. Twórcy środowiska ASP.NET opra-

cowali dedykowane do tego problemu rozwiązanie. ASP.NET

2.0 wprowadza nowy mechanizm – tzw. Master Pages.
Master page jest szablonem, definiującym ogólny wygląd stro-

ny w obszarach wspólnych dla wszystkich podstron. Dodatko-

wo Master Page wyznacza regiony (j.ang. containers), w któ-

rych umieszczona zostanie zawartość stron podrzędnych. Tak

więc efekt końcowy jest jakby złożeniem podstrony z zawarto-

ścią zdefiniowaną w stronie podrzędnej.

ViewState

ViewState jest jednym z mechanizmów pozwalających przechowy-
wać informacje zawarte na stronie. Jeśli własność EnableViewState
dla kontrolki jest ustawiona na true, jej stan czyli np. tekst który wpi-
saliśmy do pola TextBox nie znika po zajściu zdarzenia postback –
czyli odesłaniu treści strony do serwera. Należy jednak pamiętać,
że dla każdej kontrolki obiekt ViewState musi dokonać odpowied-
niego ukrytego zapisu informacji, co może znacznie zwiększyć ilość
przesyłanych danych. ViewState działa nie tylko dla kontrolek ale
i dla całej strony. Możemy wykorzystać go także do zapisu informa-
cji w postaci pary – klucza i skojarzonej z nim wartości.

background image

18

ASP.NET Starter Kit

www.sdjournal.org

Software Developer’s Journal Extra! 20

Jak pozostałe elementy, Master Page dodajemy do aplikacji

korzystając z menu ‘Add New Item’. Master Page edytuje się jak

zwykły plik html, tak więc tworzenie go nie powinno przysporzyć

Wam trudności. Trzeba tylko pamiętać, aby odpowiednio wy-

brać miejsce dla elementu ContentPlaceHolder – to w tym miej-

scu pojawiać się będzie zawartość stron podrzędnych względem
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

uwzględnić podczas wykorzystywania mechanizmów Master Pa-
ge
. Jest to zadanie nieco trudniejsze, aczkolwiek nie niewykonal-

ne. Jako przykład weźmy plik „WelcomePage.aspx”. Po pierwsze

musimy dodać w dyrektywie Page odpowiednia deklarację:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master"%>

Dodatkowy warunek to taki, że Content file nie może zawierać

takich elementów html jak:

<html>

,

<body>,

<form>

, a treść, którą

chcemy wyświetlić, powinna zawierać się w elemencie

<asp:Con-

tent>.

Zatem najlepiej jest wyciąć właściwy fragment kodu, usu-

wając całą resztę zbytecznych elementów HTML. A następnie

dodać element

<asp:Content>

z odpowiednio ustawionym atry-

butem

ContentPlaceHolderID

(nazwa powinna być taka sama, jak

nazwa odpowiedniego ContentPlaceHolder w pliku MasterPage).

Po przekształceniu na Content file, plik WelcomePage.aspx wy-

gląda jak na Listingu 2.

Theme i skin

Wykorzystanie Master Pages nie jest jedynym mechani-

zmem ułatwiającym developerowi zachowanie spójnego tzw.

Look&Feel” aplikacji. Aby ułatwić zarządzanie układem strony

oraz jej szatą graficzną w ASP.NET 2.0 wprowadzono dwa nowe

mechanizmy: Themes i Skins. Na temat, bo tak pozwolę sobie

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-

cjonalność powyższych mechanizmów najłatwiej będzie zrozu-

mieć, obserwując je w działaniu.

Aby stworzyć nowy temat w Solution Explorer zaznacza-

my korzeń strony i wybieramy ‘Add ASP.NET Folde’r->|Theme.

W ten sposób do projektu zostanie dodany folder App_Theme

wraz z przykładowym, ale pustym tematem. Zmieńmy jego na-

zwę na „Szaruga”. Temat, jak już wspomniano, może składać się

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ę-

dziemy tłumaczyli, co można wpisać do arkuszów styli, ponieważ

zakładamy, że już nieraz je tworzyliście. Dodawanie nowych sty-

li dla poszczególnych tagów oraz klas nie różni się niczym od two-

rzenia CSS formatującego zwykłe pliki HTML. Z tą małą różnicą,

że w skład Visual Web Developer wchodzi narzędzie Style Builder,

które może ułatwić definiowanie styli. Ale oczywiście programista

nadal może wpisywać selektory bez pomocy kreatora lub też do-

dać do swojego projektu plik CSS stworzony w innym narzędziu.

Oprócz arkusza styli, do naszego tematu „Szaruga” do-

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.

I tak oto temat został stworzony. Teraz wystarczy tylko za-

deklarować jego użycie na stronie. Można to zrobić na kilka

sposobów, w zależności od tego czy chcemy zastosować te-

mat do całej aplikacji, czy tylko do wybranych stron. My za-

stosujemy wariant pierwszy. Aby podpiąć temat pod wszystkie

strony dodajemy odpowiedni element do pliku Web.config:

<pages theme="Szaruga" styleSheetTheme="Szaruga"/>

Po dokonaniu powyższych operacji wszystkie strony wcho-

dzące w skład aplikacji powinny zostać sformatowane.

Zastosowanie tematów ułatwia także personalizację apli-

kacji webowych, czyli zmianę wyglądu aplikacji w zależności

od preferencji użytkownika. W takich sytuacjach twórca apli-

kacji tworzy kilka tematów, aby dać użytkownikowi możliwość

wyboru. Ale to już wykracza poza temat tego artykułu.

Nawigacja

Mimo, iż w zakres naszego serwisu wchodzi już całkiem pokaź-

ny zbiór elementów, nadal nie tworzą one spójnej całości. Bra-

kuje bowiem funkcjonalności, która umożliwiałaby nam swobod-

ne poruszanie się między stronami. Przy użyciu kilku elementów

wchodzących w skład ASP.NET 2.0 możemy szybko umożliwić

sprawną nawigację po stronie. Zaczynamy od dodania do pro-

jektu nowego elementu Site Map. Site Map jest to plik XML o roz-

szerzeniu sitemap przechowujący, jak sama nazwa mówi, mapę

strony. Każda strona, do której chcemy umożliwić nawigację, jest

reprezentowana w postaci elementu

<siteMapNode>

. Zawartość

naszego pliku Web.sitemap jest zaprezentowana na Listingu 4.

Gdy stworzyliśmy już mapę strony, pozostało nam tylko udo-

stępnienie elementu prezentującego tą mapę. Element ten pro-

ponuję dodać do Master Page, tak aby nawigacja była dostępna

Listing 3.

Przykładowy fragment pliku skin

<

asp

:

button

runat

=

"server"

BackColor

=

"#6D7894"

Font

-

Bold

=

"True"

ForeColor

=

"White"

/

>

<

asp

:

GridView

runat

=

"server"

GridLines

=

"Horizontal"

BorderColor

=

"#6d7894"

BorderStyle

=

"Double"

BorderWidth

=

"3px"

CellSpacing

=

"1"

ForeColor

=

"DimGray"

>

<

RowStyle

BackColor

=

"#F5F7FC"

ForeColor

=

"#483D64"

BorderColor

=

Gray

BorderStyle

=

Solid

BorderWidth

=

5

px

/

>

<

HeaderStyle

BackColor

=

"#6D7894"

Font

-

Bold

=

"True"

ForeColor

=

"White"

/

>

<

/

asp

:

GridView

>

Listing 2.

Przykładowy ContentPlaceHolder

<

script

runat

=

"server"

>

(

)

<

/

script

>

<

asp

:

Content

ID

=

"Content1"

runat

=

"server"

ContentPlaceHolderID

=

"ContentPlaceHolder"

>

<

div

>

<

p

align

=

"center"

style

=

"text-align: center;

font-family: Arial"

>

Witajcie

mi

ł

o

ś

nicy

fotografii

.

(

)

<

/

p

><

/

div

><

/

asp

:

Content

>

background image

19

www.sdjournal.org

Software Developer’s Journal Extra! 20

na każdej podstronie. Gdy na formularzu Master Page umieści-

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
Wizard’
opcję ‘Site Map’. Po czym zatwierdzamy wybór. Utworzo-

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

czarnych strzałek przy kontrolkach. Zawierają one wiele intere-

sujących kreatorów, takich jak np. ‘Auto Format…’ który umożliwia

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

rzecz jasna z SQL Server Express Edition. Jak wspominali-

śmy SQL Express jest silnie zintegrowany z aplikacją Visu-
al Web Developer
. Środowisko IDE będziemy wykorzystywali

do wykonywania wszystkich podstawowych operacji na bazie

danych. Aby stworzyć nową bazę, dodajemy do projektu fol-

der App_Data (menu ‘Add ASP.NET Folder’). Folder ten poja-

wi się w oknie Solution Explorer. W jego menu kontekstowym

znajduje się opcja ‘Add New Item’, wybieramy SQL Database

i wpisujemy nazwę bazy „dbAlbums.mdf”.

Ponieważ obsługa baz danych leży poza obszarem tego ar-

tykułu, pominiemy etap dodawania do bazy tabel i wypełniania

ich danymi. Podpowiemy tylko, że we wszelkich operacjach wy-

konywanych na bazie danych pomocne jest narzędzie Databa-
se Explorer
(dostępne w menu View). Zakładamy, że mamy już

wypełnioną danymi bazę danych dbAlbums zawierająca tabelę

tblAlbum

.

Do prezentacji danych służyć nam będzie nowy Web Form

„TopAlbums.aspx”. Aby wyświetlić na formularzu zawartość

tabeli

tblAlbum

, wystarczy chwycić tabelę w oknie Databa-

se Explorer i przeciągnąć ją na odpowiednie miejsce w Web
Form
. Kontrolka GridView, który pojawi się na formularzu, jest

wierną reprezentacją danych znajdujących się w wybranej ta-

beli. Wiadomo jednak, że do prezentacji chcielibyśmy wy-

brać tylko kilka kolumn. Edycji kolumn można dokonać w wi-

doku Design, jednak GridView jest kontrolką o bardzo rozbu-

dowanej funkcjonalności i do jej formatowania służy wiele roż-

nych narzędzi. Zatem tym razem zaprezentujemy, jak wyglą-

da fragment kodu w widoku Source.

Na Listingu 5 widzimy przykładową konfigurację Gridview.

W zademonstrowanym fragmencie kodu pominięto formato-

wanie samego elementu GridView, ponieważ jest ono już za-

deklarowane w stworzonym uprzednio pliku skin (patrz Listing

3). Do zaprezentowania wybrano kolumny Title, Author oraz
Cover - pole Cover zawiera nazwę pliku graficznego znajdu-

jącego się na serwerze. Atrybut

DataImageUrlFormatString

po-

zwala stworzyć adres url obrazka - wstawiając wartość po-

la

DataImageUrlField

w miejsce

{0}

. Dodatkowo dzięki zasto-

sowaniu

<ControlStyle Width="80px" />

wczytywany obrazek

jest proporcjonalnie skalowany.

I tak oto praktycznie bez konieczności pisania kodu, uda-

ło nam się połączyć z serwerem i zaprezentować dane z ba-

zy danych. To oczywiście tylko minimalny wycinek z tego, co

oferuje ASP.NET 2.0 w kwestii obsługi bazy danych. W skład

platformy wchodzi wiele mechanizmów pozwalających na do-

dawanie, edycję i usuwanie danych.

Publikujemy aplikację

W sekcji dotyczącej ekwipunku wspomniano, że Visual Web
Developer
posiada wbudowany lokalny serwer HTTP (Cassini).

Jednak jest on przeznaczony tylko do wspomagania procesu

rozwoju aplikacji Web i prędzej czy później i tak zaistnieje po-

trzeba umieszczenia naszej aplikacji na pełnowartościowym

serwerze HTTP. W ASP.NET rolę tą pełni IIS (Internet Infor-
mation Services
).

O tym jak przeprowadzić poprawną konfigurację serwera

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-

szą aplikację internetową przy pomocy programu Visual
Web Developer
, SQL Server 2005 Express Edition i środowi-

ska ASP.NET 2.0. Zadania, których się podjęliśmy nie są być

może ambitne aczkolwiek pozwoliły nam poznać te z elemen-

tów ASP.NET 2.0, które są najważniejsze dla początkujące-

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

Listing 5.

Konfiguracja GridView

<

asp

:

GridView

ID

=

"GridView1"

runat

=

"server"

AutoGenerateColumns

=

"False"

DataSourceID

=

"SqlDataSource1"

>

<

Columns

>

<

asp

:

ImageField

DataImageUrlField

=

"Cover"

HeaderText

=

"Okladka"

ReadOnly

=

"True"

NullImageUrl

=

"~/graph/DefaultCover.jpg"

DataImageUrlFormatString

=

"~/Photo/{0} "

>

<

ControlStyle

Width

=

"80px"

/

>

<

/

asp

:

ImageField

>

<

asp

:

BoundField

DataField

=

"Title"

HeaderText

=

"Tytul"

/

>

<

asp

:

BoundField

DataField

=

"Author"

HeaderText

=

"Autor"

/

>

<

/

Columns

>

<

/

asp

:

GridView

>

Listing 4.

Mapa strony Web.sitemap

<

?

xml

version

=

"1.0"

encoding

=

"utf-8"

?

>

<

siteMap

xmlns

=

"http://schemas.microsoft.com/AspNet/

SiteMap-File-1.0"

>

<

siteMapNode

url

=

"Default.aspx"

title

=

"Strona glowna"

>

<

siteMapNode

url

=

"WelcomePage.aspx"

title

=

"Strona Powitalna"

/

>

<

siteMapNode

url

=

"AddAlbum.aspx"

title

=

"Dodaj Album"

/

>

<

siteMapNode

url

=

"TopGaleries.html"

title

=

"Najlepsze Albumy"

/

>

<

/

siteMapNode

><

/

siteMap

>


Wyszukiwarka

Podobne podstrony:
Podstawy tworzenia stron WWW w języku HTML, wrzut na chomika listopad, Informatyka -all, INFORMATYKA
kurs html podstawy tworzenia stron www RHQWUXUAVSLOSX6ABOMEHGX52LV2WV67LZXY6RQ
Podstawy tworzenia stron www mniejsze
PHP5 Tworzenie stron WWW cwiczenia praktyczne cwphp5
Joomla Tworzenie stron WWW Szybki start
ASP NET 2 0 Tworzenie witryn internetowych z wykorzystaniem C i Visual Basica aspntw
Joomla! Profesjonalne tworzenie stron WWW
PHP5 Tworzenie stron WWW Cwic Nieznany
helion tworzenie stron www IVITCIZGDHIIU4BRM6BRPL2J6Y4YEAQSATHMWFI
Tworzenie stron WWW w języku HTML 222
04 tworzenie stron www
php i mysql tworzenie stron www vademecum profesjonalisty [helion] CONZDUWNFQFYUVVHCKLSSSQE7VYZR7HO
PHP Tworzenie stron WWW Szybki start
ABC tworzenia stron WWW
PHP i MySQL Tworzenie stron WWW Wydanie drugie Vademecum profesjonalisty

więcej podobnych podstron