226 39 74MB
Polish Pages [1266] Year 2011
Microsoft®
Visual Studio® 2010 Mike Snell, Lars Powers
Poznaj środowisko Visual Studio 2010 Professional ■ u *••.**• • ••
_
i naucz się tworzyć mistrzowskie aplikacje
..........................
• • *Jak wykorzystać technologię ASP.NET do tworzenia pr profesjonalnych witryn internetowych? ; .............. .................................. ■ Jak tworzyć aplikacje bi biznesowe oparte na pakiecie Office? •
.........................
.................. Jak kompleksowo testować swój kod, zaprzęgając do pracy Visual Studio? ‘I -' 1> ~ \‘ \• -• • ..• • • • • • • » * * » # * . , , ' * ‘ ' ......... - * - —X - \V_-_ .. ' „ ^ ^ ^^ ' '
Microsoft®
Visual Studio® 2010
KSIĘGA EKSPERTA H elion
Mike Snell, Lars Powers L _____________________________
Microsoft®
Visual Studio® 2010
KSIĘGA EKSPERTA
Microsoft®
Visual Studio® 2010 r
Mike Snell, Lars Powers L ____________________________
Poznaj środowisko Visual Studio 2010 Professional i naucz się tworzyć mistrzowskie aplikacje Jak wykorzystać technologię ASP.NETdo tworzenia profesjonalnych witryn internetowych? Jak tworzyć aplikacje biznesowe oparte na pakiecie Office? Jak kompleksowo testować swój kod, zaprzęgając do pracy Visual Studio?
Microsoft®
Visual Studio® 2010
KSIĘGA EKSPERTA H elion
Tytuł oryginału: Microsoft" Visual Studio* 2010 Unleashed Tłumaczenie: Tom asz Walczak Projekt okładki: Studio Gravite / Olsztyn Obarek, Pokoński, Pazdrijowski, Zaprucki ISBN: 978-83-246-3029-5 Authorized translation from the Knglish language edition, entitled: Microsoft* Visual Studio* 2010 Unleashed, ISBN 0672330814, by Mike Snell and Iars Powers, published by Pearson Education, Inc, publishing as Sams Publishing, Copyright CyCPU
3 5, dtrttun
•
—
• J X I ThisOocument.es' _______________ T latnmgQuoteTemplate dota'
4 Word Controls
1
x |
_ j>i]
^
Pointer
j i - o ti •
Aa
R*chTe*tContentContfcH
M irttiKia qK vVstewttn* dkUd strony Orłwo*ar>ia (oreiponder Recen^a WtfM Deweloper Dodatki V
Aa
PteinTextContentControl
£3|
PttureContentControl
J|
ComooBo«C ontervtC©ntrol
i' B
DropOowniistContentCont..
«5‘
DatePickeiContcntControi
j'S
BuikfcngBkxkGeSefyConte...
^
Bookmark
a a j -.W
^ Solution Tfj»mnqQuo1eTemplate' a TraioingQooteTemplate .
->' Son treiO -
J?
Spistresd
ab1
”
Cancel
Wskazówka Bardzo wygodną właściwością związaną z importowaniem i eks portowaniem ustawień jest możliwość przenoszenia ulubionych odnośników do pomocnych informacji. Te ulubione pozycje są pobierane z ustawień domyślnej przeglądarki internetowej. Ponadto m ożna je przenosić między maszynami, dlatego nie trzeba spędzać następnej godziny, szukając w pliku pomocy informacji na szcze gólnie ważny temat.
D om yślnie ustawienia są eksportowane do folderu Dokumenty. W system ie W indows 7 ścież ka do ustawień to zwykle C:\Users\[użytkownik]\Documents\Visual Studio 10\Settings. M ożna tu znaleźć XML-owe pliki .vssettings z wieloma ustaw ieniam i danego egzem plarza środowiska Visual Studio. Są to m iędzy innymi plik CurrentSettings.vssettings i wyeksportowane pliki ustaw ień. Użytkownicy m ogą wymieniać się plikam i .vssettings. Pliki tego typu można też wykorzystać do przenoszenia ustawień między kom puteram i i w ersjam i środowiska IDE. U m ożliw ia to kreator Import and Export Settings.
0
Rozdział 2. Środowisko IDE Visual Studio
Strona startowa Przy pierwszym uruchomieniu Visual Studio 2010 widoczna jest strona startowa tego środowiska. W wersji 2010 stronę startową zmodyfikowano. Teraz jest bardziej przydatna i udostępnia nowe możliwości środowiska oparte na platform ie WPF. Rysunek 2.6 przedstawia przykładową stronę startową. Sta rt ?a o e • M < ro vo rt V is u a l S tu d io
: File
Edit
View
0eb u 9
Team
Data
ttta* ..— k— ^ Tools
Test
Wmdow
H elp requestor
Start Paęe
U O Visual Studio*2010Professional Get Started
Guidance and Resources
Latest News
1 Connect To Team Foundation Server p
Tj
Welcome
New P ro je ct.
Windows
f T j Open P ro je c t.
Web
Cloud
Office
SharePoint
Data
w hat's New in visu al Studio 2010 Learn about the new fe atu res included m th n release Visual Studio 2010 O verview
Recent Projects
W hat i New in X T Fram ew ork 4 W orkhow ConsoleA pplication!
What i New m V n ual C *
11 ii
Custom ize th e vttu a l Studio Start Paqe
T raim ngQ ooteT em ptate J g Contoso
Creating Appfeatiom with Visual Studio
C odeM etnc vAdom m «ntVS2010U nleai. VSlXProiectC odeM etnc Adornm ent >, V iew portA dom m entl
Extending Visual Studio
i TeitA d o rn m e n tl EdrtorM arginl EdrtorC laisdierl
C om m unity and Learning Resources ✓ Close page m er project load ✓ Show page on startu p
Test Results ■ Error List B Output
m
Test Runs
Rysunek 2.6. Strona startowa w Visual Studio 2010
Strona startowa zawiera liczne przydatne odnośniki umożliwiające szybkie rozpoczęcie pracy. Zacznijmy od lewego górnego rogu. Z najdują się tu trzy główne opcje: łączenia się z serw erem TFS, tworzenia nowego projektu i otw ierania projektu. O pcje z lewej strony ekranu um ożli wiają też uruchom ienie niedawno używanych projektów. W górnej części znajdują się zakładki dotyczące rozpoczynania pracy, porad, zasobów i najnowszych informacji. Zakładki prowadzą do materiałów w internecie. Więcej informacji o korzystaniu ze strony startowej zawiera rozdział 7., „Społeczność .NET — interakcje w internecie”.
©
C zę ść I Wprowadzenie do Visual Studio 2010
Wskazówka Nowa strona startowa zapewnia większą kontrolę nad listą niedawno używanych projektów. Można zaznaczyć projekt na liście i przy czepić go, aby zagwarantować, że na niej pozostanie. Można też łatwo usuwać projekty z listy.
Opcje uruchomieniowe Jeśli programiście nie podoba się strona startow a lub chce, aby środowisko bezpośrednio otw ierało projekt, n a d którym będzie pracow ał przez najbliższych kilka miesięcy, może d o stosować sposób urucham iania IDE. W oknie dialogowym Options (Tools/Options lub o d n o śnik Settings na stronie startowej) należy znaleźć węzeł Environment, a następnie Startup. Rysunek 2.7 przedstawia niektóre z dostępnych opcji uruchomieniowych. Rysunek 2.7. Opcje uruchomieniowe
O ptions 4
Environm ent General A d d - in/ M acros Security AutoRecover Docum ents Extension Manager Find and Replace Fonts and Colors Im port and Export Settings
Keyboard Startup Task List W eb Browser r Projects and Solutions t Source Control P Text Editor : D eb u ggin g Database Tools
*
At startup: Show SUrt P»g*
-
Start Page news channel http'y/go.microsoft.com/fwlinlc/?1inlcid=84795Btclcid=409 Download content every: 60 ; j m inutti ;Defauit Start Page) W arning: Using a custom Start Page from a source that is unknown or not trusted can expose to your computer to security threats because the page and any referenced assem blies vwlt run under the privileges of the current user.
-
r
.9 L - J L ^
2Ą
Z tego poziomu m ożna skonfigurować, skąd system będzie pobierał inform acje wyświetlane na stronie startowej (opcja Start Page news channel). Można także nakazać w-czytanie ostatniego rozwiązania, wyświetlenie okien dialogowych New Project lub Open Project, otwarcie strony głównej przeglądarki lub niepodejmowanie żadnych działań (wyświetlenie pustego środowiska). Można także skonfigurować częstotliwość autom atycznego odświeżania zawartości na p o d sta wie danych z serwera. Ponadto można zastosować niestandardową stronę startową. Aby uzyskać informacje na tem at takich stron, należy kliknąć odnośnik Customize the Start Page na e k ra nie powitalnym strony startowej.
Rozdział 2. Środowisko IDE Visual Studio
Pierwszy projekt N astępnym naturalnym krokiem jest utw orzenie pierwszego projektu. Program ista może chcieć otw orzyć istniejący projekt lub rozpocząć pracę od podstaw . W obu scenariuszach utworzenie lub otw arcie projektu pozw ala szybko uzyskać dostęp do podstawowych funkcji zarządzania projektam i i plikami w środow isku. Aby rozpocząć, m ożna kliknąć m enu File lub odnośnik Projects na stronie startowej. Po włą czeniu m enu File w menu podrzędnym New pojawią się opcje umożliwiające utw orzenie n o wego projektu lub witryny. Projekty to szablony grupujące pliki aplikacji sieciowych, dla sys tem u W indow s, pakietu Office lub innych. Witryny obejmują zbiór plików sieciowych, które są obsługiwane jak pliki, a nie skompilowany kod. W ram ach jednej aplikacji można połączyć kilka projektów. W tedy wszystkie projekty mogą znajdować się w pojedynczym rozwiązaniu. Na rysunku 2.8 pokazano okno dialogowe New Project. W arto zauważyć, że tworzona jest aplikacja sieciowa ASP.NET oparta na języku Visual C#, a projekt znajdzie się w nowym rozwiązaniu. Więcej inform acji na ten temat zawiera ro z dział 4., „Rozwiązania i projekty”. -------------
New Project Recent Templates Installed Templates a
Visual C* Windows Web Office Cloud Extensibility Reporting Sitverlight Sitverlight fo r Windows Phone Test WCF Workflow XNA Game Studio 4.0 Other Languages Other Project Types Database Test Projects
Online Templates
Name Location: Solution name:
.NET Framework 4
* Sort by. Default
—* 1
*— * »
4
ASP.NET Web Application
Visual C*
$ $ &
ASP.NET MVC 2 Web Application
Visual C*
ASP.NET Empty Web Application
Visual C*
ASP NET MVC 2 Empty Web Application
Visual C*
ASP.NET Dynanuc Data Entities Web Application
Visual C*
ASP.NET Dynamic Data Lmq to SQL Web Application
Visual C»
ASP.NET AJAX Server Control
Visual C*
ASP.NET AJAX Server Control Extender
Visual C*
p p & &
< £ ? 3 ASP.NET Server Control
W ebApplicationl < c\code\ W ebApplicationl
S e a l e d Templates
P
Type: Visual C* A project for creating an application with a Web user interface
Visual C«
* ■J
Browse... Create directory for solution Add to source control
0*1 Rysunek 2.8. Tworzenie nowego projektu
H
C zę ść I Wprowadzenie do Visual Studio 2010
Wybieranie docelowego środowiska W iele osób pracuje w środow iskach, w których działają aplikacje zbudow ane dla różnych w er sji platform y .NET. M ożliwe, że nowe aplikacje będą powstawać dla wersji .NET 4.0, jednak nadal trzeba zapew nić obsługę jednej lub kilku aplikacji dla platform y .NET 2.0. Oczywiście, staje się to jeszcze bardziej odczuwalne wraz z pojawianiem się nowych wersji. Programista nie chce jednak przechowywać na komputerze wielu wersji środowiska Visual Studio. Zamiast tego m oże wybrać dla aplikacji docelową wersję platformy. W ten sposób m ożna korzystać z jednego środow iska i w ykorzystać najnowsze uspraw nienia. Visual Studio 2010 um ożliw ia wskazanie docelowej wersji platform y .NET dla aplikacji. O zna cza to, że można w ykorzystać pojedyncze narzędzie do pracy nad aplikacjami zbudowanymi dla różnych odm ian platform y .NET. W ybór wersji platformy .NET powoduje odpow iednie ustawienie okna narzędzi, typów projektów, dostępnych referencji, a nawet mechanizmu IntelliSense w środow isku. Elem enty te są dopasow yw ane do wybranej wersji platformy .NET. N a rysunku 2.9 ponow nie przedstaw iono okno dialogowe New Project. Tym razem w yróżnio no miejsce wyboru wersji platform y .NET (w środkowej górnej części ekranu). New Project R ecen t 7 em plates
■NET Fiamework 4
In s ta lle d Te m p lates
MM
DU DC Cloud i
I
m &&
Mpori M
| RMM
Sikerlioht for Windows Phone Test
1F M mmmm
XNA Game Studio 4 0 Other Languages Other Protect Types Database Test Projects
Type: Visual C* A project for creating an application with a Web user interface
Visual C* Application
Visual C *
ASP.NET Empty Web Application
Visual C#
ASP.NET MVC 2 Empty Web Application
V isual C *
ASP.NET Dynamic Data Entities Web Application
nsual C«
ASP.NET Dy namic Data Lmq to SQL Web Application
Visual C*
ASP NET AJAX Server Control
Visual C*
A>P NET AJA> Sen.er Control Extender
M m
ASP.NET Server Control
vrsual vs
......
Ml
Search Installed Templates
MHN
NET Framework 3.0 .NET Framework 3.5 .NET Framework 4
MMM G i
Em m
* S< ft by: Default
■
v
O n lin e Tem p lates
Ilame
.'•ebApplicationl
Locaticn:
cxcodeN
Solution nam e
.’.ebAp plication!
Bic.vse... U
Create directory for solution Add to source control
Cancel
Rysunek 2.9. Tworzenie aplikacji dla określonej wersji platformy .NET
Po wybraniu wersji platformy środowisko automatycznie dostosowuje dostępne typy projektów, m echanizm IntelliSense, biblioteki, do których m ożna dodać referencje, i inne podobne ele menty. Jeśli program ista zechce na przykład dodać referencję, w oknie dialogowym Add Refe rence dostępne będą tylko biblioteki z docelowej wersji platformy.
Rozdział 2. Środowisko IDE Visual Studio
C zę ść I Wprowadzenie do Visual Studio 2010
W wielu firmach pracują program iści używający różnych wersji środowiska Visual Studio. Trzeba zachować ostro żn o ść przy otw ieraniu starszych aplikacji w nowszych wersjach Visual Studio. Choć kod nie zostanie zmodyfikowany, środowisko przekształci plik rozwiązania na wersję 2010 (dlatego nie będzie m ożna go użyć w starszych edycjach). Osobom pracującym w takich firmach zalecam y tw orzenie wielu wersji pliku rozwiązania — po jednej dla każdej wersji środowiska Visual Studio stosowanej w zespole.
Poruszanie się po środowisku IDE Po utworzeniu pierwszego projektu należy zacząć dodawać funkcje d o aplikacji. Wymaga to podstawowej wiedzy na tem at wielu kom ponentów środowiska IDE. N a rysunku 2.12 przed stawiono przykładową w itrynę w środowisku IDE. W arto zauważyć, że układ środowiska jest standardowy. Po lewej znajduje się okno narzędzi, po prawej — okno Solution Explorer, a w środku — kod. Przy tw orzeniu innych aplikacji pojawi się podobny interfejs (o ile programista nie zmodyfikuje ustawień). PropciTracket • MK»otob
Studio Ffirmat
T|U e
looh
TeH jftm dra
tk*P
PuMnte Crtele PubM< Sftbnp * (B ra t O t jK b t i I w t ł
Sobt « t O - 'T e i t S o a i " i
J Account J ł App.Dete O [ J Scripts
< p ; Tasklist ■ Output P j ErrorLrst Use the arrow keys to resce by large increments. Rysunek 17.53. Kontrolki stref Web Part dodane do strony Następnie należy przeprowadzić „chromowanie” elementów W e b Part umieszczonych w stre fach. Proces ten polega na określeniu stylów nagłówków, odnośników i przycisków. Jest wiele stylów, które można zastosować do strefy i umieszczonych w niej elementów W e b Part. Na przykład można określić, jak kontrolki mają wyglądać po wystąpieniu błędu, przejściu w stan nieaktywny itak dalej. Do zmiany ustawień służą liczne właściwości stref. Programista może też użyć znaczników inteligentnych powiązanych z kontrolką, aby automatycznie zmienić forma towanie strefy. Rysunek 17.54 przedstawia przykład okna dialogowego A u to F o rm a t. Po lewej znaj dują się możliwe formaty. Po prawej widoczny jest podgląd elementów W e b Part w strefie. Podgląd oparty jest na aktualnej zawartości strefy. Następnie należy użyć opcji A u t o F o r m a t ,aby określić „chromowanie” każdej strefy. Obszary z odnośnikami iinformacjami należy ustawić na P rofession al ,a strefę z katalogiem — na C o lo rfu l. Dodawanie elementów Web Part do stref Teraz jesteśmy gotowi do dodania elementów W e b Part do zdefiniowanych stref. Istnieje na to kilka sposobów. Można utworzyć rzeczywiste kontrolki, które implementują klasę WebPart. Pozwala to na większą elastyczność podczas tworzenia elementów W e b Part, ale wymaga najwięcej pracy. Umożliwia także utworzenie konfiguracji użytkownika dla własnych elementów W e b Part. Konfiguracja ta jest pokazywana, gdy użytkownik edytuje dany element W e b Part. Oczywiście, technika ta jest zalecana dla twórców portalu. Rozdział 17. Tworzenie aplikacji ASP.NET Rysunek 17.54. Okno dialogowe AutoFormat umożliwia jednoczesne ustawienie licznych właściwości formatujących kontrolek stref Inny, szybki sposób na utworzenie kontrolki W e b Part polega na zdefiniowaniu kontrolki użytkownika lub wykorzystaniu standardowych kontrolek ASP.NET. Przykładowo, kiedy użyt kownik przeciągnie na formularz etykietę, ASP.NET zdefiniuje element W e b Part oparty na tej kontrolce. Stanowi to łatwy sposób tworzenia elementów W e b Part. Zastosujmy ostatnią metodę. Najpierw utworzymy element Web Part Ł ą c z a k lie n ta . Ten ele ment W e b Part udostępnia zestaw łączy do zarządzania klientem. Oto zarys procesu tworzenia tego elementu: 1. Należy przeciągnąć kontrolkę ASP Label do kontrolki WebPartZone przeznaczonej na odnośniki do danych klientów. 2. Etykieta zostanie automatycznie przekształcona w kontrolkę Web Pan. Można zobaczyć to na znaczniku. W węźle dodany został element . Wewnątrz niego znajduje się kontrolka Label umieszczona na formularzu. 3. Należy określić tytuł kontrolki We b Part. W tym celu trzeba dodać atrybut title do kontrolki Label. Atrybut ten jest przechwytywany przez ASP i stosowany do kon trolki W e b Part. 4. Należy dodać kilka odnośników w deklaracji . Ostateczny kod przed stawia listing 17.2. Ze względu na przejrzystość pominęliśmy tu informacje o stylu, które standardowo znajdują się w strefach W e b Part. L istin g 17.2. Web Part Łącza klienta C o ll ► ] J 3 Solution 92714' (1 project) J I a ,> C U \ 9 2 7 1 4 \ App.Data t» A App,T hemes t» : 'A images contoso.gif b ' Copy of MomtorC ustom > £ CustLmks.ascx 0 j 2J CustomerEditaspx yT-l CustomerEdit2.aspx b ~~-j CustomerEditAbsolute.a b _ j CustomerEdrtMaster.asp Default asp* > j A Default 2.aspx J|) fabnlcam.png FmdCustascx > r > J j, FindCustomer.aspx Help.ascx b M images-jpeg b Cj \ Login.aspx a |£j MonitorCustomer.aspx MonitorCustcmer.as b ' MomtorCustomef_temp Ą j Site.css ""1 Srte.master b TopProducts.ascx i j i web.config in * ■ Chi — —i --i -------------------------------------------------- --- -— ■■■ Rysunek 17.59. W większości scenariuszy związanych z wprowadzaniem danych można wykorzystać standardowe kontrolki ASP.NHT Na etapie projektowania można przeciągnąć kontrolki z okna T o o lb o x na powierzchnię projek tową, a następnie modyfikować je przy użyciu okna P ro p erties. Każda kontrolka m a liczne właściwości, które określają jej wygląd, działanie, dostępność iinne cechy. Lista kontrolek standardowych widoczna jest po lewej stronie rysunku 17.59. W części środ kowej znajdują się etykiety, pole tekstowe, przycisk ipole wyboru, przy czym pole tekstowe jest zaznaczone. Po prawej stronie znajduje się okno P ro p e r tie s z właściwościami tego pola. Aby wyświetlić zdarzenia powiązane z daną kontrolką, należy kliknąć ikonę błyskawicy w oknie właściwości. Rozdział 17. Tworzenie aplikacji ASP.NET Istnieje wiele kontrolek standardowych. Tabela 17.4 zawiera ich listę oraz krótkie opisy. Tabela 17.4. Kontrolki standardowe Kontrolka B u tto n Służy do w yw oływ ania przez użytkownika zdarzeń, na przykład zapisyw ania danych, przywracania ustawień lub anulow ania operacji. Podobne kontrolki to L i n k B u t t o n , która w ygląda jak odnośnik, ale działa jak przycisk, oraz Im a g e B u t t o n będąca przyciskiem w formie rysunku. C a le n d a r Wyświetla daty i um ożliw ia ich wybór. Przy użyciu właściwości S e l e c t io n M o d e można określić zaznaczane jednostki: dni, tygodnie lub miesiące. Chec kBox Umożliwia użytkownikom wybór ustawień (tak lub nie, włączony lub wyłączony). Jeśli nie jest potrzebna obsługa danych po stronie serwera, można użyć odpowiednika tej kontrolki z języka HTML. D ropDown L i s t Służy do udostępniania użytkownikom list opcji do wyboru. Można powiązać listę z danymi, a także reagować na zaznaczenie elementu przez użytkownika. Jeśli dostępnych jest wiele opcji, warto rozważyć zastosow anie kontrolki L i s t B o x . Istnieje też kontrolka C h e c k B o x L i s t do tw orzenia list w ielokrotnego wyboru i kontrolka R a d io B u t t o n L i s t do udostępniania list wzajemnie wykluczających się opcji. Filellpload Umożliwia użytkownikom przesyłanie plików z lokalnych komputerów lub sieci na serwer WWW z witryną. Image Służy do dynam icznego określania rysunku na stronie (służy do tego w łaściw ość I m a g e U r l ) . Obrazy statyczne m ożna w yśw ietlać za pomocą HTM L-ow ego znacznika < im g / > . Podobna kontrolka Im a g e M a p pozwala określić fragmenty rysunku, których kliknięcie prowadzi do wykonania specyficznych operacji. Label Służy do w yśw ietlania tekstu użytkownikom. Kontrolki L a b e l są potrzebne w tedy, jeśli programista chce tw orzyć napisy dynam icznie (w czasie d ziałania program u). Tekst statyczny zw ykle wystarczy zapisać na stronie w kodzie w HTML-u. ListBox Umożliwia użytkow nikom zaznaczenie jednej lub kilku opcji na liście. Można z nią powiązać dane. Literal Umożliwia dodaw anie do strony kodu w HTM L-u. Zw ykłe służy do dynam icznego tworzenia znaczników w kodzie i dodawania ich do strony. MultiView Udostępnia u żytkow nikom wiele w idoków na podstaw ie dokonanego w yboru lub stanu system u. Te same dane m ożna w yśw ietlać na przykład w trybie odczytu lub edycji. Każdy w idok w ym aga przeciągnięcia kontrolki View do kom ponentu MultiView. Następnie w kontrolce View trzeba um ieścić w yśw ietlane elementy. Podobny efekt można uzyskać przy użyciu kilku kontrolek Panel, jednak komponentMultiView ma dodatkowe funkcje obsługi w idoków . Panel Pełni funkcję kontenera na inne kontrolki. Jest szczególnie przydatna przy program ow ym dodawaniu kontrolek do stron. M ożna w tym celu w yw ołać m etodę P a n e l . C o n t r o l s . A d d . RadioButton Wyświetla listę elem entów , z których m ożna w ybrać tylko jeden. W łaściw ość G ro u p N a m e pozwala połączyć kilka przycisków opcji w jedną grupę. Table Służy do dynamicznego tworzenia tabel w kodzie. Do tworzenia tabel statycznych należy użyć HTML-owego znacznika < t a b l e > . TextBox Umożliwia użytkow nikom wpisywanie danych tekstowych. Kontrolka ta ma w łaściw ość T e x tM o d e , która określa tryb wpisyw ania: jeden wiersz (ustaw ienie domyślne), wiele w ierszy lub hasło. C zę ść V Tworzenie aplikacji dla przedsiębiorstw Tabela 17.4. Kontrolki standardowe — ciąg dalszy Kontrolka Opis W iz a r d Ten kom ponent przypomina kontrolkę M u l t i V ie w , jednak udostępnia dodatkow e m ożliw ości potrzebne do przechodzenia naprzód i wstecz m iędzy etapami kreatora (lub widokam i). XM L Służy do wyświetlania informacji w form acie XML. Dane w tym form acie m ożna w skazać za pom ocą właściwości D o c u m e n t S o u r c e . Można też podać plik transformacji (XSLT) określający formatowanie danych w XML-u. W tym celu należy przypisać do właściwości T r a n s f o rm S o u r c e odpowiedni plik.xslt. Kontrolki do sprawdzania poprawności ASP.NET udostępnia zbiór kontrolek do sprawdzania poprawności (walidacji). Przy ich użyciu można określić, jak system ma sprawdzać dane wpisane przez użytkownika, zanim przystąpi do przetwarzania strony. Walidacja pozwala zagwarantować, że internauta podał dane we wszystkich wymaganych polach, a także ustalić, czy informacje są zgodne z regułami zapisanymi w aplikacji. Walidacja ma miejsce po stronie serwera i zapobiega przetwarzaniu stron ASP, jeśli dane są nieprawidłowe (zobacz omówiony wcześniej cykl życia strony). Kontrolki mogą też generować kod w JavaScripcie uruchamiany po stronie klienta (wartość domyślna właściwości E n a b l e C l i e n t ' - ♦ S c r i p t to T r u e ) . Umożliwia to powiadomienie użytkownika o błędach wykrytych na poziomie strony przed przesłaniem jej na serwer. Aby użyć kontrolek do walidacji, należy w standardów)' sposób przeciągnąć je na formularz. Warto umieścić je obok sprawdzanego elementu, co pozwala wyświetlić użytkownikom tek stowe wskazówki na temat błędów. Standardowa technika polega na umieszczaniu kontrolek do walidacji po prawej stronie kontrolowanego elementu. Następnie należy wskazać ten element we właściwości ControlToValidate kontrolki walidacyjnej. Zwykle programiści określają właściwości T e x t i E r r o r M e s s a g e kontrolek walidacyjnych. Pierwsza z nich zawiera tekst wyświetlany po nieudanym sprawdzaniu poprawności, a druga — komunikat o błędzie widoczny w kontrolce V a l i d a t i o n S u m m a r y na poziomie strony. Ta ostatnia kontrolka służy do wyświetlania wszystkich komunikatów o błędach w jednym miejscu. Przykładowe kontrolki walidacyjne przedstawia rysunek 17.60. W oknie T o o lb o x w lewej części ilustracji widoczna jest otwarta lista kontrolek walidacyjnych. Na górze strony internetowej znajduje się kontrolka V a l i d a t i o n S u m m a r y (pod napisem E d ycja d a n y c h k lie n ta ) . Można też zauważyć, że pola tekstowe z imieniem iadresem e-mail są powiązane z kontrolkami walidacyjnymi. Na rysunku zaznaczona jest kontrolka R e g u ł a r E x p r e s s i o n V a l i d a t o r przy polu z adre sem e-mail. Przy jej użyciu można zastosować wyrażenia regularne do sprawdzenia, czy użytkow nik wpisał adres o właściwym formacie. Po prawej stronie widoczne są właściwości tej kontrolki. W tabeli 17.5 znajduje się lista kontrolek walidacyjnych udostępnianych przez ASP.NET oraz krótki opis każdej z nich. Rozdział 17. Tworzenie aplikacji ASP.NET Tabela 17.5. Kontrolki walidacyjne K o n tro lk a O pis RequiredField '-♦Validator Służy do sprawdzania zawartości wymaganych pól. Można ją łączyć z innymi kontrolkami z listy. RangeValidato r Spraw dza, czy w pisane dane zaw ierają się w określonym przedziale. W łaściw ość T y p e pozwala określić typ przedziału, na przykład s t r i n g , i n t e g e r , d o u b l e , d a t e lub c u r r e n c y . RegułarExpression '-♦Validator Sprawdza zgodność wpisanych danych z w yrażeniem regularnym . W e w łaściw ości V a l i d a t i o n E x p r e s s i o n należy podać praw idłow e w yrażenie regularne. Można też użyć w yrażeń w budow anych środowiska Visual Studio. Kliknięcie przycisku z wielokropkiem pozwala w ybrać standardowe wyrażenie opisujące kod pocztowy, adres e-m ail lub numer telefonu. CompareValidator Porównuje dane wejściowe od użytkownika ze statyczną wartością, inną kontrolką lub typem danych i określa ich poprawność. To ostatnie porównanie pozwala się upewnić, że użytkownik w pisał odpowiednią wartość, którą można przekształcić na określony typ. Aby zastosować to podejście, należy użyć właściwości T y p e . CustomValidator Służy do tworzenia niestandardowych kontrolek do sprawdzania poprawności. Programista może utworzyć kod sprawdzający dane po stronie serwera i kod w JavaScripcie do obsługi walidacji po stronie klienta. ValidationSummary W yświetla listę błędów sprawdzania popraw ności zgłoszonych na stronie. W idoczna jest w n iej wartość właściwości E r r o r M e s s a g e wszystkich kontrolek, które wykryły usterki. C zę ść V Tworzenie aplikacji dla przedsiębiorstw K o n tro lk i lo g o w a n ia ASP.NET ma wbudowany zbiór kontrolek logowania użytkownika. Mają one na celu udostęp nienie kompletnego rozwiązania z minimum (a czasem bez) kodu do zarządzania uwierzytel nianiem użytkowników wewnątrz aplikacji sieciowej. Na rysunku 17.61 przedstawiono listę wszystkich kontrolek tego rodzaju w oknie T o o lb o x . Rysunek 17.61. Kontrolki logowania ASP.NET umożliwiają skonfigurowanie zabezpieczeń witryny Toolbox i* Validation - a x N avigation a Login It Pointer C hang ePassw ord C re ate ltse i Wizard Lo g in Lo gtnN am e Lo g in Status Lo g in View %jj, U P assw ordR ec every W ebP aits ' AJAX Extensions Dynam ic Data - Domyślnie kontrolki logowania używają mechanizmu nazywanego członkostwem A SP .N E T (ang. A S P .N E T M e m b e r s h ip ). Pozwala to kontrolkom na pracę z bazą danych uwierzytelniania i powiązanymi funkcjami bez pisania kodu. Członkostwo ASP.NET pozwala na tworzenie użyt kowników igrup oraz zarządzanie danymi użytkowników (w tym hasłami). Usługi członkostwa wewnątrz ASP.NET mogą współpracować z bazami danych SQL Express lub Active Directory. Można także napisać swojego własnego dostawcę, który' będzie włączony do modelu. Przyjrzyjmy się przez chwilę konfigurowaniu członkostwa. Najpierw spójrzmy na liczne kon trolek logowania. Tabela 17.6 przedstawia krótki przegląd takich kontrolek. Tabela 17.6. Kontrolki logowania K o n tro lk a O pis Login Udostępnia podstawowy interfejs spraw dzania poświadczeń użytkow ników (ich nazw i haseł). Można sform atow ać w ygląd kontrolek, a także w yśw ietlić inne łącza i kom unikaty, takie jak błędy uwierzytelniania. Kontrolka jest przeznaczona domyślnie do pracy z mechanizmem ASP.N ET Membership. Jeśli się ją skonfiguruje, nie trzeba pisać kodu. Jeżeli jednak program ista chce napisać sw ój w łasny kod, m oże użyć zdarzenia A u t h e n t i c a t e do napisania niestandardow ego schematu. LoginView Pozwala na definiowanie dwóch widoków: widoku dla użytkowników, którzy są zarejestrowani, oraz użytkowników anonimowych. Do każdego z widoków dodaje się kontrolki, aby na podstawie statusu użytkowników określić, co widzą. PasswordRecovery Jest używ ana do odzyskiwania haseł użytkowników. Typowo konfiguruje się tę kontrolkę, aby w ysyłać do użytkowników listy e-m ail z hasłami. Jednak istnieją też inne opcje. Rozdział 17. Tworzenie aplikacji ASP.NET Tabela 17.6. Kontrolki logowaniu — ciąg dalszy EBH9HHI Opis LoginStatus Pokazuje status uwierzytelniania bieżącego użytkownika. Użytkownicy mogą być zarejestrowani lub nie. Jeśli są, kontrolka pozwala im na wylogowanie. Jeżeli nie, m ogą się zalogować. LoginName Wyświetla nazw ę załogowanego użytkownika. CreatellserWizard Pozwala użytkownikom na tworzenie w łasnych kont lub pomaga w odzyskaniu haseł. Za pomocą tej kontrolki użytkownicy mogą zażądać utworzenia konta (i podać informacje personalne). ChangePassword Pozwala użytkownikom na wprowadzanie bieżących i nowych haseł. Kontrolka ta może następnie sprawdzić hasła i zm ienić je w przypadku ich poprawnego podania. Konfigurowanie uwierzytelniania użytkowników Można utworzyć stronę logowania (lub kontrolkę), przeciągając kontrolkę Login bezpośrednio na formularz. Po jej umieszczeniu można zacząć określać właściwości, które definiują bez pieczeństwo aplikacji. Rysunek 17.62 przedstawia przykład. Widoczną stronę, L o g in .a sp x , utworzono w folderze Account jako część szablonu witryny. Warto zauważyć, że strona korzy sta ze strony wzorcowej. W oknie projektowym nie m a zbyt wielu możliwości formatowania, ponieważ jest ono ustalane na podstawie kompozycji. 'o)s TT o© 92714 - Microsoft Visual Studio £dit i*** W ebjite frułd fiebug Team .J * —J* A A h -J ^ >0 • 7i® A . !| & L $ -1 7 -U jJ . -* ffirm at - Tjb le Jools Defcug 1^» S> • &1 Test jjfiodow Help Any CPU •I i ^ : • editocone fNew Inline Style) - • « / ^4 ! : fNone i * Accountiogm .aspi* X I r>Standard ■, »)-.. (Default Fon:) J □ Sr* S te ■ ■ -aster . Data 33 Solution ‘9Z714 a project) ✓ Validation i- Navigation a .J C:\_\92714\ a ^ s Login ^ Pointer I ChangePasiword CreateUserWaard Aj Login 4^ LogmName • ~ pi,pgm«Loy kltent IZnsjd: zamówienie Logow ane W pis: nazwę użytkownika i hasło Jeśli nie masz konta, zarejestruj się Nazwa użytkownika LogmVieur PasswordRecovery • Logm.aspx.es INowe zamówienie Login Tasks ; A u to F o r m a t , j C o n vert to T empiate Hasło! > —i jA p a App,Data App.T hemes images | Copy of MonitorCuł t> i C ustlm ks-jsci $ £2ł C ustomerE drtasp« ■ ier£dit2.aspi «— -- -- — TTiRtomerlEditAbsciu P Zaparoętaj mnie Zaloguj j t> Dynamic Data ;>AJAX Extensions AlAX Toolkit CustomerEditMastei *-i Default asp* f -j DefauH2.asp> fabrAam.png Contoso 2010 . Reporting | £jj 1 l HTML >AJAX Controls a fVebPartsProject Theft are no usable controls « this orouc Drao an item Account jd contoso.gf a Ć-JLogm^spx Znajdź klienta LogmStatus WebParts * Solution Explorer 4 4 Design 73 Split Source < tent2> C zę ść V Tworzenie aplikacji dla przedsiębiorstw Rysunek 17.64 ukazuje wyniki, które użytkownicy widzą w przeglądarce. W tym przypadku kontrolka SiteMapPath została dodana do strony wzorcowej, dlatego występuje w całej witry nie. Kontrolka automatycznie pobiera zawartość pliku W e b .s ite m a p . & Untitled Page - Windows Internet Explorer / U lu b io n e c i Hm •t 0 U n tt.ed P .g e O contoso j v I ♦ f I X ! |fe> Znajdź kKenta ^ - Q - fi !W » Stfo na ▼ w B e zp ie cze ń stw o w N a jze d zia ▼ ” ZARZĄDZANIE KLIENTAMI Nowy kKent Znajdź zamówienie Nowe zamówienie Strona downa > Znajdź klienta > Edytuj dane klienta Edycja danych klienta Nazwisko Imię 1 1 1 1 Numer telefonu i i 1 r ~ Miejscowość Adres 1 Woj _ | [wybterz) _______ 1 Kod j |__ Klient wyrazi zgodę na kontakt przez e mail Kbent wyrazi zgodę na kontakt telefoniczny Zapisz Anulu] Contoso 2010 . f Zau fa n e w itryny | Tryb ch ro n io n y; w toczon y «• +»100% » Rysunek 17.64. Kontrolka SiteMapPath korzysta z pliku .sitemap do udostępnienia nawigacji użytkownikom Kontrolki danych ASP.NET m a duży zbiór kontrolek, których można używać do pracy z danymi, wyświetlania ich oraz wiązania. Kontrolki te powinny działać z niewielką ilością lub w ogóle bez kodu. Zamiast pisać kod, programista powinien być w stanie skonfigurować kontrolki tak, aby zachowywały się zgodnie z jego oczekiwaniami. Rysunek 17.65 pokazuje listę wszystkich kontrolek danych w panelu T o o lb o x . Uwaga S p o so b y p racy z d an ym i i b a z a m i danych zo sta n ą o p is a n e w roz d zia le 21., „Praca z b azam i d a n y c h ”, w punk cie „ W ią z a n ie danych z k o n tr o lk a m i sie c io w y m i”. Rozdział 17. Tworzenie aplikacji ASP.NET Rysunek 17.65. Można wykorzystać kontrolki danych ASP.NET, aby umożliwić użytkownikom pracę z danymi w witrynie Tcclbcx Standard a Data Pointer A A cce ssD a ta So u rce > C h art M D a ta ln t ■D «*► O a taP a ge i D etailsView P • i En tityD ataSou rce Fo rm V iew P G n d V ie w P Lin q D a ta So u rce Z J ListV iew H ; O b je ctD a ta So u rce Q u e iyE xte n d e f Repeater H ffc SiteM ap D ataSou rce W Sq lD ataSo u rce ii X m lD ata So u rce V alid ation • a x A - Tabela 17.7 udostępnia krótki przegląd wszystkich tych kontrolek. Tabela 17.7. Kontrolki danych Kontrolka E3 A cce ssD a ta S o u rce , ASP.NET udostępnia wiele kontrolek źródła danych. Te źródła mogą być konfigurowane do pracy E n t i t y D a t a S o u r c e , ze źródłami danych i wykonywać operacje wyboru, uaktualniania, dodawania i usuwania. Kontrolki L in q D a t a S o u r c e , źródła danych używa się do łączenia z innymi kontrolkami (takimi jakG r id V ie w ) . Kontrolki O b je c t D a t a S o u r c e , źródła danych ASP.NET pozwalają na dostęp do danych SQL Server, Microsoft Access, danych S it e M a p D a t a S o u r c e , zaw artych w obiekcie, danych w formacie XML, zdefiniowanych w pliku .sitemap i pobranych S q lD a t a S o u r c e , przy użyciu zapytań LINQ. XmlDataSource C h a rt Um ożliw ia tworzenie stron w yśw ietlających dane w formie wykresu. Można powiązać dane z kontrolką, w yśw ietlać różne rodzaje w ykresów i um ożliwić interakcje za pomocą Ajaksa. Zobacz podpunkt „Kontrolka Chart" w dalszej części rozdziału. D a t a L is t Kontrolki tej używa się, gdy chce się kontrolować sposób wyświetlania i formatowania danych. Można użyć tej kontrolki z szablonam i w celu uzyskania kontroli nad sposobem wyświetlania danych. D a ta P a g e r Um ożliwia zarządzanie stronicowaniem danych i interfejsem użytkownika związanym z tym procesem . Można jej używać niezależn ie lub jako części innej kontrolki. Opisano ją także w rozdziale 1., „Krótki przegląd środow iska Visual Studio 2010". D e t a ils V ie w Ta kontrolka pozw ala na w yśw ietlanie pojedynczego wiersza danych (lub szczegółów wiersza). Można wyświetlić ten wiersz jako zbiór edytowalnych pól wewnątrz tabeli. Kontrolka D e t a i l s V i e w może być używana w połączeniu zkontrolką G r i d V i e w w celu uzyskania hierarchicznej struktury edycji. F o r m V ie w Udostępnia te same funkcje, co kontrolka D e t a i l s V i e w , a dodatkowo umożliwia definiowanie szablonów służących do w yśw ietlania danego wiersza. C zę ść V Tworzenie aplikacji dla przedsiębiorstw Tabela 17.7. K o n tro lk i d a n y c h Kontrolka — c ią g d a ls z y | Opis G rid V ie w To kontrolka służąca do wiązania i pracy z danymi tabelarycznymi. Kontrolka ta współpracuje z wieloma źródłami danych. Pozwala na sortowanie, stronicowanie, edycję, dodawanie i usuwanie danych. L is t V ie w Upraszcza wyświetlanie powtarzających się danych, a jej podstawą są szablony użytkownika. Dlatego programista może określić, jak interfejs ma działać w trakcie wyświetlania, modyfikowania, dodawania i usuwania danych. Ponadto kontrolka L is t V ie w obsługuje sortowanie, stronicowanie i — oczywiście — wiązanie danych. Q u e ry E x te n d e r Umożliwia definiowanie filtrów do danych zwracanych ze źródła. R e p e a te r Ta kontrolka jest kontenerem na powtarzające się dane. W połączeniu z szablonami pozwala określić sposób wyświetlania takich informacji. Czasem lepszym rozwiązaniem jest użycie kontrolki L is t V ie w . Kontrolka Chart Nowością w Visual Studio 2010 i ASP.NET 4.0 jest kontrolka Chart. Umożliwia definiowanie wykresów na podstawie ponad 25 ich typów. Wykres można powiązać ze źródłem danych (szczegóły opisano w rozdziale 21.). Po uruchomieniu kontrolka generuje plik graficzny (zwykle .p n g ) iwysyła go w odpowiedzi ze stroną. Jest to doskonały dodatek dla programistów, którzy chcą udostępniać w internecie informacje statystyczne lub finansowe w formacie graficznym. Kontrolkę Chart można przeciągnąć z okna T o o lb o x na stronę. Następnie można skonfigurować kontrolkę w oknie projektowym lub za pomocą znaczników. W oknie projektowym dostępny jest inteligentny znacznik, który umożliwia wykonanie wielu operacji związanych z konfigurowa niem kontrolki (służy do tego także okno P r o p e r tie s ). Pozwala on zdefiniować źródło danych, wybrać rodzaj wykresu, a następnie określić wyświetlane elementy danych. Na rysunku 17.66 przedstawiono prosty wykres kolumnowy. Tu wykres jest powiązany ze źródłem danych, w którym połączono informacje o sprzedaży produktów według kategorii. Warto zauważyć, że na osi X podano numery kategorii, natomiast na osi Y — poziom sprzedaży. Informacje pochodzą z kolumn źródła danych. Kontrolki użytkownika Jeśli programista nie może znaleźć wrpełni odpowiadającej m u kontrolki, powinien skorzystać z platformy do tworzenia własnych komponentów dostępnej w Visual Studio. Można zastoso wać proste podejście i zbudować kontrolkę użytkownika. Kontrolki użytkownika działają po dobnie jak strony. Można określić ich budowę w oknie projektowym, mają powiązany plik z kodem i korzystają z takiego samego modelu zdarzeń jak strony. Po utworzeniu kontrolki użytkownika można umieścić ją na stronach witryny. Rozdział 17. Tworzenie aplikacji ASP.NET C zę ść V Tworzenie aplikacji dla przedsiębiorstw Dodawanie kontrolki użytkownika do strony Kontrolkę użytkownika można dodać do strony, przeciągając ją z okna S o lu tio n E x p lo re r na okno projektowe formularzy sieciowych. Niestety, kontrolki użytkownika nie są dostępne w oknie T o o lb o x . Mają jednak reprezentację graficzną w czasie projektowania, co pokazano na rysunku 17.68. Tu kontrolkę użytkownika M o n ito r P r o ilu c ts U c .a s p x dodano do formularza sieciowego P r o d u c t D a s h b o a r d , a s p x opartego na stronie wzorcowej S ite .m a s te r . Rozdział 17. Tworzenie aplikacji ASP.NET Oczywiście, kontrolkę można dodać także bezpośrednio za pomocą znaczników. Jednak zasto sowanie okna projektowego jest nieco łatwiejsze. Korzystając ze znaczników, trzeba najpierw zarejestrować kontrolkę na stronie. Służy do tego znacznik @Register. Należy umieścić go pod dyrektywą @Page. Znacznik ^Register powinien obejmować plik kontrolki użytkownika (atrybut src), nazwę typu kontrolki użytkownika (atrybut tagname) iprzedrostek pomagający w zidentyfikowaniu znacznika (tagpref ix). Poniżej znajduje się przykładowy kod: Po zarejestrowaniu kontrolki można używać jej za pomocą standardowych znaczników. Poniż szy kod to przykład zastosowania wcześniej zarejestrowanej kontrolki: C zę ść V Tworzenie aplikacji dla przedsiębiorstw Więcej informacji Jed yn ie p o r u s z y liś m y z a g a d n ie n ie p isa n ia w łasn ych k o n tr o le k w A S P .N E T . Jedną z w ad k o n tr o le k u żytk ow n ika jest ic h zależ ność od w itryn y. O czywiście, m ożn a skopiow ać i wkleić plik, jednak pojaw iają s ię w te d y p rob lem y z k o n tr o lą w ersji. Inną w ad ą jest Toolbox oraz w czasie p r o je k to w an ia (n ie m o ż n a u żyw ać okna Properties, in telig e n tn y c h z n a c z brak o b s łu g i k o n tr o le k w ok n ie n ik ó w i ta k d a le j). A by z a p e w n ić o b s łu g ę w c za sie p r o je k to w a n ia i in sta la cji, tr z e b a u tw orzyć kontrolkę niestandardową. D zia ła ona w taki sam sp o só b , jak gotow e k on trolk i A SP.N ET. M o żn a naw et utw orzyć k la sę p o ch o d n ą , r o z sz e r z y ć istn ieją cą k on trolk ę i p rzy g o to w a ć jej n iesta n d a rd o w ą w ersję Tworzenie aplikacji ASP.NET MVC W Visual Studio 2010 i platformie .NET 4.0 wprowadzono szablon aplikacji ASP.NET MV C , który służy do budowania witryn na podstawie wzorca M V C (ang. m o d e l- v ie w - c o n tr o lle r ) . Sam wzorzec M V C nie jest niczym nowym, nowością jest natomiast zaimplementowanie go przez Microsoft w środowisku ASP.NET. Wzorzec pozwala odejść od standardowego modelu rozwijania stron za pomocą formularzy sieciowych. Zamiast tego można utworzyć kilka luźno powiązanych obiektów łatwych do sprawdzenia za pomocą testów. Polega to na zamianie klasy Page, cyklu życia i obiektu View >-►51316 na luźno powiązaną architekturę, która ułatwia powtórne wykorzystanie kodu i pro gramowanie sterowane testami. W implementacji architektury M V C w ASP.NET zachowano możliwość stosowania stron wzorcowych, arkuszy stylów i standardowych znaczników do określania układu kontrolek. Jednak pisanie mechanizmów wygląda tu zupełnie inaczej. Wprowadzenie do aplikacji ASP.NET MVC Szablon aplikacji ASP.NET M V C pozwala oddzielić dane i logikę biznesową (model) od kodu wyświetlającego informacje (widoku). Ponadto umieszcza kod cło obsługi interakcji z widokiem imodele w odrębnej klasie (w kontrolerze). Podział ten zmienia sposób pisania stron w ASP.NET. W modelu ASP.NET M V C nadal można tworzyć strony .a s p x i kontrolki ,a sc x , aby określić układ interfejsu użytkownika. Jednak zamiast pisać kod w' plikach z kodem strony, do zarzą dzania komunikacją z użytkownikiem należy użyć klasy kontrolera. Ponadto kod z definicjami obiektów z danej dziedziny iprzeznaczony do obsługi baz danych jest niezależny od kontrolera. Na rysunku 17.69 przedstawiono implementację modelu ASP.NET MV C. Rozdział 17. Tworzenie aplikacji ASP.NET R y su n e k 17.69. Model W aplikacjach ASP.NET MVC model (dane) jest odrębny od widoku (kodu interfejsu użytkownika) i kontrolera (kodu leczącego model z widokiem) Widok Wyświetla dane modelu, aby użytkownik mógł je zobaczyć lub zmienić EditCustomer.aspx Customer.es Kontroler Pobiera dane modelu i zwraca je do modelu w ce u utrwalenia Wybiera widok, przesyła dane modelu do widoku, obsługuje interakcję użytkownika z widokiem CustomerController.es Luźno powiązane elementy implementacji architektury M V C w ASP.NET ułatwiają powtórne wykorzystanie kodu i umożliwiają stosowanie programowania sterowanego testami. Podział kodu na warstwy obiektów z dziedziny idanych to dobra praktyka używana już od wielu lat. W ASP.NET M V C wymienione elementy składają się na model. Ponadto umieszczenie kodu interfejsu użytkownika w odrębnej klasie (w kontrolerze), gdzie nie trzeba uwzględniać specy fiki środowiska ASP.NET, ułatwia pisanie testów jednostek. Poniżej znajdują siędodatkowe informacje na temat trzech warstw architektury ASP.NE T MVC: • M odel — reprezentuje kod do zarządzania danymi w aplikacji. Stan modelu dotyczy danych przechowywanych w relacyjnej (lub innej) bazie. Obiekt modelu można traktować jak obiekty z dziedziny stosowane w innych architekturach. Załóżmy, że programista używa obiektu Customer reprezentującego w aplikacji klienta. Atrybuty obiektu mogą znajdować się w bazie danych. Obiekt Customer w architekturze M V C potrafi współdziałać z bazą w celu zapisania swojego stanu. Zawiera też reguły bizne sowe dotyczące klienta. Oczywiście, można zaimplementować w aplikacji warstwę dostępu do danych iumożliwić obiektom modelu korzystanie z tej warstwy. Ponadto do zdefiniowania modelu można użyć platformy Entity lub technologii LINQ to SQL (więcej informacji o nich zawiera rozdział 21.). Jeśli programista nie utworzył (lub nie potrzebuje) obiektów z dziedziny, nie musi pisać długiego kodu modelu. Na przykład jeśli korzysta z obiektów DataSet w pracy z da nymi z bazy, może używać tych obiektów bezpośrednio w kontrolerze i przekazywać je do widoku. Wtedy same obiekty DataSet pełnią funkcję modelu. W ten sam sposób można wyświetlać w całości zawarte w widoku informacje, które nie są oparte na C zę ść V Tworzenie aplikacji dla przedsiębiorstw modelu. Wtedy możliwe jest przetwarzanie żądania w kontrolerze i wyświetlanie w y ników w widoku bez konieczności tworzenia egzemplarzy obiektu modelu. • W id o k — wyświetla użytkownikom dane, aby można się było z nimi zapoznać i je zmodyfikować. Widoki to komponenty interfejsu użytkownika aplikacji (w ASP.NET oparte są na znacznikach). Źródłem danych widoku są dane udostępniane przez m o del. Widok otrzymuje je od kontrolera. Kontroler może na przykład przesłać dane klienta do strony przeznaczonej do edycji takich danych. Na stronie można wyświe tlić dane do edycji za pomocą kontrolek TextBox. • K o n tr o le r — to kod pisany do obsługi zdarzeń i interakcji z użytkownikiem w apli kacjach M V C . Żądania do witryny są kierowane do klasy kontrolera. Kod kontrolera potrafi obsłużyć interakcję z użytkownikiem, współdziała z modelem i wiąże wyniki z odpowiednim widokiem. Na przykład kiedy użytkownik zażąda szczegółów ze strony do edycji danych klienta, kontroler skontaktuje się z modelem, aby pobrać informa cje, wybierze właściwy widok iprzekaże dane z modelu do widoku. Kiedy użytkownik wciśnie przycisk Z a p i s z , kontroler przeniesie dane z powrotem do modelu, a model zapisze je w bazie. Model przetwarzania żądań w aplikacjach ASP.NET MVC Model przetwarzania w aplikacjach napisanych za pomocą platformy ASP.NET M V C wygląda inaczej niż cykl życia w tradycyjnych aplikacjach ASP.NET opisanych we wcześniejszej części rozdziału. Jeśli programista pisze aplikacje ASP.NET MVC, musi zrozumieć, w jaki sposób kod jest przetwarzany przez klasy z przestrzeni nazw System.W e b .Mvc. Przetwarzanie w aplikacjach ASP.NET M V C , podobnie jak we wszystkich aplikacjach sieciowych, zaczyna się od zgłoszenia przez użytkownika żądania H T T P za pomocą adresu URL. Platforma ASP.NET M V C odwzorowuje adres U RI. na klasę kontrolera (zamiast na strony .a s p x ) . To odwzorowanie można kontrolować za pomocą reguł przekierowywania adresów URL w pliku G lo b a l.a $ a x . Metoda Application Start służy do rejestrowania przekierowań adresów URI. z żądania do konkretnego kontrolera. Przykład zastosowania tej techniki prześledzimy w dal szym punkcie, „Definiowanie przekierowań adresów URI. do kontrolera”. Klasa kontrolera przetwarza żądanie, komunikuje się z modelem i wybiera odpowiedni widok do wyświetlenia użytkownikowi. Widok generuje kod w H T M L - u wysyłany z powrotem do przeglądarki użytkownika w celu wyświetlenia. Poniżej przedstawiono przegląd modelu prze twarzania w aplikacjach ASP.NET M V C : Użytkownik żąda adresu URL. Żądanie jest przekazywane z ISS do klasy Uri '-►RoutingModule. Jest to moduł H T T P używany jako początkowy kontroler do prze kierowywania żądań. Klasa UrlRoutingModule przetwarza żądanie i obsługuje przekierowanie, używając klasy MvcRouteHandler do wybrania w witrynie obiektu kontrolera, który otrzyma żądanie. D o określania, który obiekt kontrolera odbierze żądanie, służy metoda Application Start w pliku G lo b a l.a s a x . Rozdział 17. Tworzenie aplikacji ASP.NET U w aga — jeśli klasa nie znajdzie przekierowania, przekaże żądanie do środowiska ASP.NET. Umożliwia to łączenie kodu M V C istandardowego kodu ASP.NET w jed nej witrynie. 3. Po ustaleniu klasy kontrolera platforma M V C tworzy egzemplarz kontrolera i wy wołuje jego metodę Execute. 4. Metoda operacji uruchamiana w kontrolerze jest określana na podstawie żądania. Metodę tę wywołuje platforma MVC. Metodę operacji należy napisać w kontrolerze w' celu obsługi żądania ipowiązania modelu z widokiem. 5. Metoda operacji pobiera z żądania (widoku) dane wejściowe od użytkownika, łączy te informacje z modelem, a następnie przekazuje odpowiedź za pomocą specyficznego typu zwracanych danych platformy MVC. Najczęściej stosowany jest typ ViewResult, który zawiera wyniki przekazywane do widoku w celu wyświetlenia ich użytkownikom. Inne typy zwracanych danych to: RedirectToRouteResult, RedirectResult, ContentResult, JsonResult,FileResult i EmptyResult. Opisany model przetwarzania znacznie różni się od standardowego modelu ASP.NET. Warto zauważyć, że nie obejmuje odsyłania danych. Zamiast tego żądania są przekazywane przez główną klasę kontrolera. Dla programistów tworzących aplikacje w środowisku ASP.NET oznacza to, że nie mogą korzystać ze zdarzeń związanych z cyklem życia strony ani obiektu ViewState. Dlatego kontrolki ASP.NET oparte na odsyłaniu i obiekcie ViewState nie będą działać na platformie M V C . Dotyczy to kontrolek GridView, Repeater iDataList. To wady, ale są także pewne zalety. Omawiamy je dalej. Kiedy wybrać MVC zamiast formularzy sieciowych? Istnieje wiele programów, które nadal należy pisać w postaci aplikacji W e b Form. Platforma ASP.NET M V C nie zastępuje technologii W e b Form. Stanowi natomiast alternatywę przydat ną dla zespołów programistycznych, które oczekują wyraźniejszego podziału zadań, łatwiejsze go pisania testów jednostek idokładniejszej kontroli odpowiedzi z kodem w HTML-u. Zalety platformyASP.NET MVC Aplikacje ASP.NET M V C są przydatne w wielu scenariuszach. Po pierwsze, aplikacje ASP.NET M V C dobrze nadają się dla zespołów, gdzie obowiązuje wyraźny podział obowiązków. Jeśli oso by odpowiedzialne za interfejs użytkownika piszą widok, a inne — obiekty z domeny (modele), podział tych elementów na odrębne pliki iwarstwy jest korzystny. Po drugie, aplikacje ASP.NET M V C obsługują programowanie sterowane testami nie tylko dla modelu, ale też dla kodu do przetwarzania interfejsu użytkownika. Jest tak, ponieważ kod do przetwarzania interfejsu użytkownika jest oddzielony od kodu związanego z wyświetlaniem interfejsu (czyli od widoku). Osoby, które próbowały testować kod tradycyjnych formularzy sieciowych ASP.NET, wiedzą, że jest to trudne. W ramach testów trzeba wczytać stronę, kon trolki i inne powiązane obiekty. W platformie ASP.NET M Y C nie ma takich barier w obszarze testów jednostek. C zę ść V Tworzenie aplikacji dla przedsiębiorstw Po trzecie, aplikacje ASP.NET M V C zapewniają większą kontrolę nad odpowiedziami odsyła nymi użytkownikom. Zwykle można kontrolować generowany kod w HTML-u i JavaScripcie. Dzieje się to jednak kosztem braku możliwości korzystania z wielu kontrolek ASP.NET, a także wymaga pisania większej ilości kodu niż w tradycyjnych formularzach sieciowych ASP.NET. Zalety formularzy sieciowych ASP.NET Model formularzy sieciowych jest dobrze znany wielu programistom i stanowi doskonałe środowisko do szybkiego tworzenia witryn. Aplikacje ASP.NET W e b Form często są bardziej zrozumiałe dla programistów przyzwyczajonych do programowania opartego na zdarzeniach. Ponadto pozwalają korzystać z: modelu stanu HTTP, obsługiwanych po stronie serwera zda rzeń strony i kontrolek, a także obiektu ViewState do przechowywania stanu między żąda niami. Strony oparte na formularzach sieciowych często wymagają mniej znaczników w in terfejsie użytkownika i mniej kodu w plikach z kodem. Ponadto takie aplikacje łatwiej jest zrozumieć niż luźno powiązane rozwiązania oparte na wzorcu M V C . Uwaga T radycyjne fo r m u la r z e siecio w e i s tr o n y A SP .N E T M V C m o g ą w sp ó łistn ie ć ze sob ą. Jedno r o z w ią z a n ie n ie w yklucza d r u g ie g o . W aplikacjach A S P .N E T M V C c z ę sto p r z y d a tn e są sta n d a r d o w e strony A SP.N E T d o ob słu gi pewnych scenariuszy, na przykład p r o stego w iązan ia i w y św ie tla n ia d an ych . Tworzenie projektów MVC Do tworzenia aplikacji ASP.NET M V C w środowisku Visual Studio służy szablon A S P .N E T M V C 2 W e b A p p l ic a ti o n . Jest to szablon aplikacji, a nie witryny. Dlatego powstaje odrębny plik projektu, a konfigurowanie aplikacji przebiega inaczej niż witryn. Szablon można otworzyć w oknie dialogowym A d d N e w P r o je c t (należy kliknąć rozwiązanie prawym przyciskiem myszy i użyć opcji S e le c t A d d / N e w P r o je c t lub wybrać z menu opcję F ile / N e w /P ro je c t). Na rysunku 17.70 pokazano tworzenie witryny opartej na omawianym szablonie. Warto zauważyć, że przebiega to podobnie jak tworzenie w Visual Studio innych projektów. Visual Studio umożliwia utworzenie powiązanego projektu testów jednostek witryny M V C . Przypomnijmy, że jedną z zalet architektury ASP.NET M V C jest ułatwienie testowania jedno stek kodu aplikacji sieciowej. Dlatego zachęcamy do korzystania z tej możliwości. Warto ze zwolić środowisku Visual Studio na utworzenie projektu testów powiązanego z aplikacją sie ciową. Na rysunku 17.71 pokazano okno C r e a te U n it T est P r o je c t otwierane w czasie tworzenia nowej aplikacji ASP.NET MVC. W tym rozdziale nie zamierzamy ponownie opisywać testów jednostek. Więcej informacji na ten temat można znaleźć w rozdziale 9., „Testowanie kodu”. Rozdział 17. Tworzenie aplikacji ASP.NET C zę ść V Tworzenie aplikacji dla przedsiębiorstw • M od els — jest przeznaczony na pliki klas logiki biznesowej i obsługi baz danych. Można na przykład napisać klasę C u s to m e r .e s i umieścić ją w tym katalogu. Można też zapisać model w odrębnym pliku .d li iużywać go w witrynie. • V iew s — zawiera pliki związane z interfejsem użytkownika. Są to: strony, kontrolki użytkownika i strony wzorcowe. Pliki tego rodzaju można dodać za pomocą okna dialogowego A d d V ie w (zobacz punkt „Tworzenie widoku” w dalszej części rozdzia łu). Warto zauważyć, że w katalogu V iew s znajduje się wiele folderów. Każdemu kontrolerowi powinien odpowiadać odrębny folder widoku. Na przykład po utwo rzeniu klasy C u s to m e r C o n tr o lle r .e s należy utworzyć katalog V ie w s \C u s to r n e r . Warto też zwrócić uwagę na folder S h a r e d . Jest on przeznaczony na widoki współużytkowa ne przez kontrolery, na przykład na stronę S ite .m a s te r . • C o n tr o ller s — służy do przechowywania wszystkich klas kontrolerów aplikacji. Klasy kontrolerów zawierają kod operacji łączących działania użytkownika z modelem i okre ślających właściwą odpowiedź (zwykle widok). Platforma ASP.NET M V C wymaga dołączenia słowa C o n tro ller do nazwy każdej klasy kontrolera, na przykład C u s to m e r C o n tro ller.e s. Rozdział 17. Tworzenie aplikacji ASP.NET • Scripts — przechowuje pliki skryptów. W projektach ASP.NET M V C katalog ten domyślnie zawiera podstawowe skrypty ajaksowe ipliki biblioteki jQuery. • C o n ten t — służy do przechowywania statycznych elementów witryny, na przykład arkuszy stylów irysunków. Dodawanie mechanizmów za pomocą ASP.NET MVC Może się wydawać, że budowanie aplikacji za pomocą platformy ASP.NET M V C wymaga skonfigurowania wielu elementów inapisania dużej ilości kodu. Jednak Visual Studio znacznie ułatwia definiowanie modeli, kontrolerów iwidoków'. W tym punkcie przedstawiamy przykład zastosowania narzędzi platformy ASP.NET M V C do utworzenia mechanizmów, które umoż liwią użytkownikom wyświetlenie klientów na liście, zaznaczenie klienta izmianę dotyczących go danych. Tworzenie modelu Przypomnijmy, że model to kod służący do interakcji z danymi w' aplikacji. Jeśli programista korzysta z bazy danych, kod zwykle zwraca listę danych i pojedynczych rekordów. Czasem użytkownicy mogą pracować z tymi danymi (dodawać je, aktualizować i usuwać). Jeśli w apli kacji dostępny jest już zestaw' klas do obsługi bazy danych i przetwarzania logiki biznesowej, można zastosować go w modelu. Jeżeli takie klasy nie istnieją, trzeba je utworzyć. Załóżmy, że programista korzysta z bazy danych zawierającej tabelę Customers (dla uprosz czenia użyjemy bazy Northwńnd). Można napisać niestandardowy klasę odzwierciedlającą właściwości ireguł)’sprawdzania danych specyficzne dla obiektu Customer.Trzeba też napisać kod do pobierania listy klientów, wczytywania danych jednego klienta iaktualizowania ich w'bazie. Inna możliwość to wykorzystanie platformy Entity do utworzenia modelu. Dzięki temu nie trzeba pisać modelu od podstaw. Platforma Entity generuje klasę z odwzorowaniem między fizyczną bazą danych imodelem obiektowym. W tym przykładzie wykorzystamy właśnie plat formę Entity (więcej informacji na jej temat zawiera rozdział 21.). Aby rozpocząć pracę, należy kliknąć prawym przyciskiem myszy katalog M o d e ls w oknie S o lu tio n E x p lo r e r iwybrać opcję A d d N e w I te m . W oknie dialogowym A d d N e w I te m trzeba zaznaczyć widoczny po lewej stronie węzeł D a ta iwybrać szablon elementu A D O .N E T E n tity D a ta M o d e l. Jeśli model zawiera wiele encji, można nazwać go N o r th w in d . Tu użyliśmy nazwy C u s to m e r .e d m x , co pokazano na rysunku 17.73. Szablon elementu A D O .N E T E n tity D a ta M o d e l powoduje uruchomienie kreatora Entity Data Model. Kreator umożliwia zdefiniowanie połączenia z bazą danych i wybranie tabel, które należy umieścić wrmodelu. Na rysunku 17.74 pokazano przykładowe ustawienia. Warto zauważyć, że wybrana jest tabela C u s to m e r s . Wygenerowany kod znajdzie się w przestrzeni nazw M o d e ls . C zę ść V Tworzenie aplikacji dla przedsiębiorstw Add NeA Item - ISwiawr ContosoM vc Installed Templates J Sort by: Default Visual C* Code Data General Web Windows Forms WPF Reporting Silverlight Workflow lit ta i # & Si S 3 "K! do Database Unit Test Visual C« XSLT File Visual C* XM L File Visual C* DataSet Visual C» XM L Schema Visual C* LlN Q to SQL Classes Visual C* SQL Server Database Visual C * ADO.NET Entity- Data M odel Visual C* P S| Search Installed Templates Type: Visual C * A project item for creating an ADO.NET Entity Data Model. f Online Templates !> I 4 Name: R y su n ek 1 7 .7 3 . Custom er, edmx Modele można definiować za pomocą platformy Entity ■5-7 R y su n e k 1 7 .74. Należy wybrać tabele, które mają znaleźć się w modelu danych rri-ii-r Choose Your Database Objects W hich database objects do you want to include m your model? t y l a j Tables 1 3 Categories (dbo) 1 3 Custom erCustom erDem o (dbo) 1 H Custom erDem ographics (dbo) es (dbo) Order Details (dbo) “ 3 Orders (dbo) 3 Products (dbo) ^ 2 Region (dbo) f Shippers (dbo) Pluraliie or sm gulanze generated object names y Include foreign key colum ns in the m odel j M odel Namespace Models < Previous Finish ] Cancel Sam model w oknie projektowym E n t i t y F r a m e w o r k pokazano na rysunku 17.75. Następny krok polega na zdefiniowaniu kontrolera współdziałającego z modelem. Rozdział 17. Tworzenie aplikacji ASP.NET ^813^ C zę ść V Tworzenie aplikacji dla przedsiębiorstw Warto pamiętać, że klasy kontrolera można poddać testom jednostek. Jest to jedna z głównych zalet platformy ASP.NET MVC. W programowaniu sterowanym testami test)' powstają w czasie pisania kontrolera. W tym miejscu nie omawiamy testów jednostek — szczegółowe informacje znajdują się w rozdziale 9. Następny krok polega na napisaniu kodu łączącego klasę CustomerCont roller imodel Customer. W przykładowym projekcie na początku kodu kontrolera dodamy deklarację zmiennej, która pozwoli połączyć się z modelem. Deklaracja tworzy egzemplarz modelu. Tu używamy modelu northwndEntitiesl: / / Łączenie się z modelem (bazą North wind). namespace ContosoMvc.Controllers { public class CustomerController : Controller { private ContosoMvc.Models.northwndEntitiesl nwdEntities = new ContosoMvc.Models.northwndEntitiesl(); Następny krok wymaga napisania kodu, który zwróci listę klientów do wyświetlenia przez wńdok. Platforma ASP.NET M V C do zwracania listy danych z modelu używa metody Index kontrolera. Typem zwracanym przez większość metod platformy jest ActionResult. Typ ten informuje platformę, że należy wykonać operację. Jedną z nich jest ViewResult, polegająca na przekształceniu modelu na widok. Dlatego poniższy kod zwraca wartość typu ViewResult, wywołując metodę Cont roller.View iprzekazując dane modelu (listę klientów): public ActionResult Index() { / / Pobieranie listy wszystkich klientów. return View( nwdEntities.Customers.ToList()); } Teraz chcemy, aby użytkowmicy mogli dodać do bazy danych nowego klienta. Oznacza to, że użytkownikowi należy wyświetlić pusty widok (więcej na ten temat za chwilę), w którym m o ż na wprowadzić dane klienta, a następnie przesłać je do kontrolera. Następnie kontroler prze każe dane klienta do modelu, aby zaktualizować bazę. W ostatnim kroku kontroler ponownie wyświetli listę klientów. W e wzorcu ASP.NET M V C do dodawania rekordów' do modelu służy metoda Create. W kontro lerze znajdują się dwie jej w'ersje. Pierwsza nie przyjmuje parametrów i umożliwia zwrócenie pustego widoku na dane. Wersja ta wygląda następująco: public ActionResult Create!) { return View(); > Druga metoda obsługuje dane przesłane przez użytkownika, 'fu metoda Create przyjmuje obiekt Customer. Następnie kieruje wywołanie do modelu, aby dodać dane klienta, zapisać zmiany iprzekazać przetwarzanie z powrotem do strony z listą (Index). Wersję te pokazano poniżej: Rozdział 17. Tworzenie aplikacji ASP.NET [AcceptVerbs(HttpVerbs.Post)J public ActionResult Create(Customer customer) { try { // Wstaw d a w klienta. nwdEntities.AddToCustomers(customer); _nwdEntities.SaveChanges(); / / Przekierowanie do strony z listą klientów. return RedirectToAction("Index"); } catch { return View(); > } Warto zwrócić uwagę na atrybut metody — AcceptVerbs. Określa on, że tę wersję metody C reate należy wywołać w ramach żądania H T T P POST. Możliwość edycji danych klienta to ostatnia funkcja, którą dodamy do kontrolera. Platforma ASP.NET M V C używa do edycji metody Edit. Także ona ma dwie wersje. Pierwsza umożliwia użytkownikom zobaczenie danych pojedynczego klienta w trybie edycji. Metoda pobiera dane z modelu iprzekazuje do odpowiedniego widoku. Proces ten pokazano w poniższym kodzie: public ActionResult Edit(string id) { // Wybieranie danych klienta na podstawie identyfikatora. Customer cust = (from c in nwdEntities.Customers where c.CustomerlD == id select c).First(); return View(cust); } Warto zauważyć, że platforma ASP.NET M V C domyślnie używa parametru id do przekazy wania identyfikatora rekordu do metody. Parametr ten został ustawiony na stronie I n d e x .a s p x (jest to widok). Jeśli chce się zmienić wartość parametru, należy to zrobić w widoku. Poniższy kod pokazuje, jak ustawić parametr na stronie I n d e x .a s p x (widoki omawiamy dalej): |
| |