ASPNET 35 z wykorzystaniem C i VB Zaawansowane programowanie

background image

ASP.NET 3.5

z wykorzystaniem C# i VB.

Zaawansowane programowanie

Autor: Bill Evjen, Scott Hanselman, Devin Rader

T³umaczenie: Pawe³ Dyl, Marek Pa³czyñski

ISBN: 978-83-246-1852-1

Tytu³ orygina³u:

Professional ASP.NET 3.5: in C# and VB

Format: 172x245 , stron: 1792

Oprawa: twarda

Kompletne Ÿród³o informacji na temat ASP.NET!

Jak rozpocz¹æ pracê z ASP.NET?

Jakie kontrolki dostarcza ASP.NET?

Jak wykorzystaæ technologiê AJAX?

ASP.NET powsta³ jako odpowiedŸ firmy Microsoft na rosn¹c¹ popularnoœæ aplikacji internetowych.

Jest on czêœci¹ technologii .NET oraz bezpoœrednim nastêpc¹ rozwi¹zania ASP, dostêpnym na

rynku od stycznia 2002 roku. Od tego czasu ASP.NET zdobywa sobie coraz wiêksz¹ popularnoœæ.

Teraz dziêki wykorzystaniu technologii .NET mo¿esz projektowaæ dynamiczne strony, korzystaj¹c

z dowolnego jêzyka obs³uguj¹cego to rozwi¹zanie.
Dziêki tej ksi¹¿ce dowiesz siê, jak to robiæ przy u¿yciu jêzyków C# i Visual Basic. Jednak zanim

napiszesz pierwsz¹ liniê kodu, warto poznaæ nowe œrodowisko pracy,tak aby tworzenie stron

przebiega³o szybko, wygodnie i bezproblemowo. W kolejnych rozdzia³ach zdobêdziesz wiedzê

na temat dostêpnych kontrolek, metod pracy ze stronami wzorcowymi oraz sposobów

stosowania kompozycji i skórek. Ponadto nauczysz siê wykorzystywaæ Ÿród³a danych

oraz zarz¹dzaæ informacjami przy u¿yciu ADO.NET. Ksi¹¿ka ta sprawdzi siê znakomicie zarówno

w rêkach pocz¹tkuj¹cego, jak i zaawansowanego programisty.

Œrodowisko pracy

Dyrektywy strony ASP.NET 3.5

Obs³uga zdarzeñ

Wykorzystanie kontrolek serwerowych

Wykonywanie skryptów po stronie klienta

Walidacja danych

Zastosowanie kompozycji i skórek

Źród³a danych

Zarz¹dzanie danymi przy u¿yciu ADO.NET

Tworzenie zapytañ z wykorzystaniem LINQ

Konfiguracja i uruchomienie us³ugi IIS7

Model dostawców

Platformy portalowe

Wsparcie dla HTML i CSS

Wykorzystanie technologii AJAX

Bezpieczeñstwo aplikacji internetowych w ASP.NET

Obs³uga sytuacji wyj¹tkowych

Debugowanie kodu

Wykorzystanie plików i strumieni

Obs³uga ¿¹dañ HTTP

Mo¿liwoœci Silverlight

Twórz dynamiczne rozwi¹zania, korzystaj¹c z nowoczesnych technologii!

background image

Spis treci

Wstp ....................................................................................................................................................... 25

Rozdzia 1. rodowiska do tworzenia aplikacji i stron ......................................................................... 49

Opcje lokalizacji aplikacji .............................................................................................. 49

Wbudowany serwer WWW ........................................................................................ 50
IIS ......................................................................................................................... 51
FTP ........................................................................................................................ 52
Strony internetowe wymagajce FrontPage Extensions ............................................... 53

Opcje struktury strony ASP.NET ..................................................................................... 54

Model inline ........................................................................................................... 56
Model code-behind .................................................................................................. 58

Dyrektywy strony ASP.NET 3.5 ....................................................................................... 61

@Page ................................................................................................................... 62
@Master ................................................................................................................ 64
@Control ................................................................................................................ 66
@Import ................................................................................................................. 67
@Implements ......................................................................................................... 69
@Register .............................................................................................................. 69
@Assembly ............................................................................................................. 70
@PreviousPageType ................................................................................................ 70
@MasterType .......................................................................................................... 70
@OutputCache ........................................................................................................ 71
@Reference ............................................................................................................ 71

Zdarzenia strony ASP.NET ............................................................................................. 72
Praca z mechanizmem postback .................................................................................... 74
Mechanizm cross-page posting ...................................................................................... 74
Katalogi aplikacji ASP.NET ............................................................................................ 81

Katalog \AppCode .................................................................................................. 81
Katalog \App_Data ................................................................................................. 86
Katalog \App_Themes ............................................................................................. 86
Katalog \App_GlobalResources ................................................................................ 87
\App_LocalResources ............................................................................................. 87
\App_WebReferences ............................................................................................. 87
\App_Browsers ....................................................................................................... 87

background image

4

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Kompilacja .................................................................................................................. 88
Build Providers ............................................................................................................. 92

Korzystanie z wbudowanych klas BuildProvider .......................................................... 93
Korzystanie z wasnych klas BuildProvider ................................................................. 94

Global.asax ................................................................................................................. 99
Praca z klasami w VS 2008 ........................................................................................ 103
Podsumowanie .......................................................................................................... 108

Rozdzia 2. Kontrolki serwerowe ASP.NET i skrypty po stronie klienta .............................................109

Kontrolki serwerowe ASP.NET ...................................................................................... 109

Typy kontrolek serwerowych ................................................................................... 110
Tworzenie aplikacji z wykorzystaniem kontrolek serwerowych .................................... 112
Praca ze zdarzeniami kontrolek serwerowych ........................................................... 114

Dodawanie stylu do kontrolek serwerowych .................................................................. 117

Przegld wspólnych waciwoci kontrolek .............................................................. 117
Zmiana stylu za pomoc kaskadowych arkuszy stylów .............................................. 118

Kontrolki serwerowe HTML .......................................................................................... 122

Omówienie klasy bazowej HtmlControl .................................................................... 125
Omówienie klasy HtmlContainerControl ................................................................... 126
Omówienie wszystkich klas HTML ........................................................................... 127
Praca z klas HtmlGenericControl ........................................................................... 128

Zarzdzanie stronami i kontrolkami serwerowymi za pomoc JavaScript ......................... 129

Korzystanie z Page.ClientScript.RegisterClientScriptBlock ......................................... 131
Korzystanie z Page.ClientScript.RegisterStartupScript .............................................. 133
Korzystanie z Page.ClientScript.RegisterClientScriptInclude ...................................... 135

Funkcja zwrotna po stronie klienta ............................................................................... 135

Porównanie postback z funkcj zwrotn .................................................................. 135
Korzystanie z moliwoci funkcji zwrotnej — proste podejcie ................................... 138
Korzystanie z funkcji zwrotnych z jednym parametrem .............................................. 142
Uycie mechanizmu funkcji zwrotnej — przykad bardziej zaawansowany .................... 145

Podsumowanie .......................................................................................................... 150

Rozdzia 3. Kontrolki serwerowe Web ASP.NET ....................................................................................151

Wprowadzenie do kontrolek serwerowych Web .............................................................. 151
Kontrolka serwerowa Label ......................................................................................... 153
Kontrolka serwerowa Literal ........................................................................................ 155
Kontrolka serwerowa TextBox ...................................................................................... 155

Uycie metody Focus() ........................................................................................... 157
Uycie AutoPostBack ............................................................................................. 157
Uycie AutoCompleteType ...................................................................................... 159

Kontrolka serwerowa Button ....................................................................................... 160

Waciwo CausesValidation ................................................................................ 160
Waciwo CommandName .................................................................................. 160
Przyciski, które wspópracuj z JavaScript po stronie klienta ..................................... 162

Kontrolka serwerowa LinkButton .................................................................................. 164
Kontrolka serwerowa ImageButton ............................................................................... 164
Kontrolka serwerowa HyperLink ................................................................................... 166
Kontrolka serwerowa DropDownList ............................................................................. 166
Wizualne usuwanie elementów z kolekcji ...................................................................... 169

background image

Spis

treci

5

Kontrolka serwerowa ListBox ...................................................................................... 171

Umoliwienie wyboru kilku pozycji ........................................................................... 171
Przykad uycia kontrolki ListBox ............................................................................ 171
Dodawanie elementów do kolekcji .......................................................................... 174

Kontrolka serwerowa CheckBox ................................................................................... 174

W jaki sposób sprawdzi, czy pole wyboru jest zaznaczone ....................................... 175
Przypisanie wartoci do pola wyboru ....................................................................... 176
Wyrównywanie tekstu kontrolki CheckBox ................................................................ 176

Kontrolka serwerowa CheckBoxList .............................................................................. 177
Kontrolka serwerowa RadioButton ............................................................................... 180
Kontrolka serwerowa RadioButtonList .......................................................................... 182
Kontrolka serwerowa Image ........................................................................................ 183
Kontrolka serwerowa Table ......................................................................................... 184
Kontrolka serwerowa Calendar .................................................................................... 187

Wybieranie daty za pomoc kontrolki Calendar ........................................................ 187
Wybieranie formatu daty pobieranej z kalendarza ..................................................... 189
Wybór dni, tygodni lub miesicy .............................................................................. 189
Praca z zakresami dat ........................................................................................... 190
Zmiana stylu i zachowania kalendarza .................................................................... 192

Kontrolka serwerowa AdRotator ................................................................................... 196
Kontrolka serwerowa Xml ............................................................................................ 198
Kontrolka serwerowa Panel ......................................................................................... 199
Kontrolka serwerowa PlaceHolder ................................................................................ 201
Kontrolka serwerowa BulletedList ................................................................................ 202
Kontrolka serwerowa HiddenField ................................................................................ 207
Kontrolka serwerowa FileUpload .................................................................................. 209

Pobieranie plików za pomoc kontrolki FileUpload ................................................... 209
Nadawanie ASP.NET waciwych praw do pobierania plików ...................................... 212
Zrozumienie limitów rozmiaru plików ....................................................................... 214
Wczytywanie wielu plików na tej samej stronie ......................................................... 215
Przekazywanie pobranego pliku do obiektu Stream .................................................. 218
Przenoszenie zawartoci pliku z obiektu Stream do tablicy bajtów ............................. 219

Kontrolki serwerowe MultiView oraz View ..................................................................... 220
Kontrolka serwerowa Wizard ....................................................................................... 224

Dostosowanie nawigacji po stronach ...................................................................... 226
Uycie atrybutu AllowReturn ................................................................................... 226
Praca z atrybutem StepType ................................................................................... 227
Wstawianie nagówka w kontrolce Wizard ................................................................ 228
Praca z systemem nawigacji kontrolki Wizard .......................................................... 228
Obsuga zdarze kontrolki Wizard ........................................................................... 229
Uycie kontrolki Wizard do pokazania elementów formularza ..................................... 231

Kontrolka serwerowa ImageMap .................................................................................. 236
Podsumowanie .......................................................................................................... 238

Rozdzia 4. Walidacyjne kontrolki serwerowe ................................................................................... 239

Zrozumienie procesu walidacji ..................................................................................... 239
Walidacja po stronie klienta a walidacja po stronie serwera ........................................... 240
Kontrolki walidacyjne ASP.NET .................................................................................... 242

Przyczyny walidacji ................................................................................................ 243
Kontrolka serwerowa RequiredFieldValidator ........................................................... 244
Kontrolka serwerowa CompareValidator .................................................................. 249

background image

6

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Kontrolka serwerowa RangeValidator ...................................................................... 252
Kontrolka serwerowa RegularExpressionValidator .................................................... 257
Kontrolka serwerowa CustomValidator .................................................................... 258
Kontrolka serwerowa ValidationSummary ................................................................ 263

Wyczanie walidacji po stronie klienta ......................................................................... 266
Korzystanie z obrazków i d wików w powiadomieniach o bdach .................................. 268
Praca z grupami walidacyjnymi ..................................................................................... 269
Podsumowanie .......................................................................................................... 273

Rozdzia 5. Praca ze stronami wzorcowymi ....................................................................................... 275

Do czego s nam potrzebne strony wzorcowe? ............................................................. 275
Podstawy stron wzorcowych ........................................................................................ 278
Pisanie kodu stron wzorcowych ................................................................................... 279
Pisanie kodu strony z zawartoci ............................................................................... 282

czenie rónych typów stron i jzyków ................................................................... 286
Okrelanie, której strony wzorcowej uy ................................................................. 288
Praca z tytuem strony ........................................................................................... 289
Praca z kontrolkami i waciwociami strony wzorcowej ............................................ 290

Okrelanie domylnej zawartoci na stronie wzorcowej .................................................. 297
Programowe przypisywanie strony wzorcowej ................................................................ 299
Osadzanie stron wzorcowych ....................................................................................... 300
Strony wzorcowe dostosowane do przegldarek ............................................................ 304
Porzdek wywoywania zdarze .................................................................................... 306
Buforowanie stron wzorcowych .................................................................................... 306
ASP.NET AJAX i strony wzorcowe ................................................................................. 307
Podsumowanie .......................................................................................................... 310

Rozdzia 6. Kompozycje i skórki ............................................................................................................311

Korzystanie z kompozycji ASP.NET ............................................................................... 311

Przypisywanie kompozycji pojedynczej stronie ASP.NET ............................................ 311
Stosowanie stylów do caej aplikacji ....................................................................... 313
Usuwanie kompozycji z kontrolek serwerowych ........................................................ 314
Usuwanie kompozycji ze stron ................................................................................ 315
Stosowanie kompozycji podczas korzystania ze stron wzorcowych ............................. 316
Dziaanie atrybutu StyleSheetTheme ....................................................................... 316

Tworzenie wasnych kompozycji ................................................................................... 317

Tworzenie waciwej struktury katalogów ................................................................. 317
Tworzenie skórki ................................................................................................... 318
Umieszczanie w kompozycjach plików CSS .............................................................. 320
Wstawianie do kompozycji obrazków ....................................................................... 323

Definiowanie wielu opcji skórek ................................................................................... 326
Programowa praca z kompozycjami .............................................................................. 328

Programowe przypisywanie kompozycji strony .......................................................... 328
Programowe przypisanie waciwoci SkinID kontrolki .............................................. 329

Kompozycje, skórki i wasne kontrolki .......................................................................... 330
Podsumowanie .......................................................................................................... 334

Rozdzia 7. Wizanie danych w ASP.NET 3.5 ........................................................................................ 335

Kontrolki róde danych ............................................................................................... 335

Kontrolka SqlDataSource ....................................................................................... 337
Kontrolka LinqDataSource ..................................................................................... 350
Kontrolka AccessDataSource ................................................................................. 355

background image

Spis

treci

7

Kontrolka XmlDataSource ...................................................................................... 356
Kontrolka ObjctDataSource .................................................................................... 357
Kontrolka SiteMapDataSource ............................................................................... 362

Konfiguracja buforowania kontrolki róda danych ......................................................... 362
Przechowywanie informacji o poczeniu ....................................................................... 363
Uycie kontrolek list umoliwiajcych wizanie z kontrolkami róde danych ..................... 366

GridView ............................................................................................................... 366
Edycja danych rekordu GridView ............................................................................. 383
Usuwanie danych GridView .................................................................................... 390
DetailsView .......................................................................................................... 393
Wstawianie, modyfikacja i usuwanie danych za pomoc DetailsView ......................... 398
ListView ............................................................................................................... 400
FormView ............................................................................................................. 410

Inne kontrolki umoliwiajce wizanie danych ............................................................... 414

DropDownList, ListBox, RadioButtonList oraz CheckBoxList ...................................... 414
TreeView .............................................................................................................. 415
AdRotator ............................................................................................................. 415
Menu ................................................................................................................... 416

Skadnia rozwijanego wizania danych ......................................................................... 416

Zmiany w skadni wizania danych .......................................................................... 417
Wizanie danych XML ............................................................................................ 418

Wyraenia i klasy do budowania wyrae ...................................................................... 419
Podsumowanie .......................................................................................................... 424

Rozdzia 8. Zarzdzanie danymi za pomoc ADO.NET .......................................................................... 425

Podstawowe moliwoci ADO.NET ................................................................................ 426

Podstawowe zadania ADO.NET ............................................................................... 426
Pobieranie danych ................................................................................................. 427
Wstawianie danych ............................................................................................... 428
Aktualizacja danych ............................................................................................... 429
Usuwanie danych .................................................................................................. 430
Podstawowe przestrzenie nazw i klasy ADO.NET ...................................................... 431
Korzystanie z obiektu Connection ........................................................................... 432
Korzystanie z obiektu Command ............................................................................. 434
Korzystanie z obiektu DataReader .......................................................................... 435
Korzystanie z DataAdapter ..................................................................................... 438
Korzystanie z parametrów ...................................................................................... 440
Opis obiektów DataSet oraz DataTable ................................................................... 443
Typowany DataSet ................................................................................................ 448
Korzystanie z bazy danych Oracle i ASP.NET ............................................................ 449

Kontrolka serwerowa DataList ..................................................................................... 451

Przegld dostpnych wzorców ................................................................................ 452
Praca z ItemTemplate ............................................................................................ 452
Praca z innymi wzorcami ukadów graficznych .......................................................... 455
Praca z wieloma kolumnami ................................................................................... 457

Kontrolka serwerowa ListView ..................................................................................... 458

Przegld dostpnych wzorców ................................................................................ 458
Korzystanie ze wzorców ......................................................................................... 459
Tworzenie wzorca ukadu graficznego ...................................................................... 461
Tworzenie ItemTemplate ........................................................................................ 462
Tworzenie EditItemTemplate .................................................................................. 463

background image

8

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Tworzenie EmptyItemTemplate ............................................................................... 464
Tworzenie InsertItemTemplate ................................................................................ 464
Wyniki .................................................................................................................. 465

Wykorzystanie Visual Studio do zada ADO.NET ............................................................ 466

Tworzenie poczenia ze ródem danych ................................................................. 467
Praca z projektantem DataSet ................................................................................ 470
Korzystanie z obiektu DataSet CustomersOrders ..................................................... 475

Asynchroniczne wywoywanie polece ........................................................................... 479

Asynchroniczne metody klasy SqlCommand ............................................................. 480
Interfejs IAsyncResult ............................................................................................ 481
AsyncCallback ...................................................................................................... 482
Klasa WaitHandle ................................................................................................. 482
Sposoby przetwarzania asynchronicznego w ADO.NET .............................................. 483
Asynchroniczne poczenia .................................................................................... 500

Podsumowanie .......................................................................................................... 501

Rozdzia 9. Zapytania z wykorzystaniem LINQ .................................................................................... 503

LINQ to Objects .......................................................................................................... 503

Tradycyjne metody zapyta .................................................................................... 504
Zamiana tradycyjnych zapyta na LINQ .................................................................... 511
Grupowanie danych ............................................................................................... 519
Inne operatory LINQ .............................................................................................. 520
Zczenia LINQ ...................................................................................................... 520
Paginacja za pomoc LINQ ..................................................................................... 522

LINQ to XML .............................................................................................................. 523

czenie danych XML ............................................................................................ 526

LINQ to SQL ............................................................................................................... 528

Zapytania Insert, Update oraz Delete z wykorzystaniem LINQ .................................... 537
Rozszerzanie LINQ ................................................................................................ 542

Podsumowanie .......................................................................................................... 542

Rozdzia 10. Praca z XML oraz LINQ to XML ......................................................................................... 543

Podstawy XML ............................................................................................................ 544

XML InfoSet .......................................................................................................... 546
Definicja schematu XSD-XML ................................................................................. 547
Edycja plików XML oraz schematów XML w Visual Studio 2008 ................................. 549

XmlReader oraz XmlWriter ........................................................................................... 552

Korzystanie z XDocument zamiast XmlReader ......................................................... 555
Korzystanie ze schematu oraz XmlTextReader ......................................................... 556
Walidacja wzgldem schematu przy uyciu XDocument ............................................. 558
Korzystanie z optymalizacji NameTable ................................................................... 560
Pobieranie typów .NET CLR z dokumentów XML ....................................................... 562
ReadSubtree oraz XmlSerialization ......................................................................... 564
Tworzenie obiektów CLR z dokumentów XML za pomoc LINQ to XML ....................... 566
Tworzenie XML za pomoc XmlWriter ...................................................................... 567
Tworzenie XML za pomoc LINQ to XML .................................................................. 569
Udoskonalenia obiektów XmlReader oraz XmlWriter w wersji 2.0 ............................... 572

XmlDocument oraz XPathDocument ............................................................................. 573

Problemy z DOM ................................................................................................... 573
XPath, XPathDocument oraz XmlDocument .............................................................. 574

background image

Spis

treci

9

Obiekty DataSet ......................................................................................................... 578

Zapisywanie obiektów DataSet w postaci XML ......................................................... 578
XmlDataDocument ................................................................................................ 580

Kontrolka XmlDataSource ........................................................................................... 582
XSLT ......................................................................................................................... 585

XslCompiledTransform ........................................................................................... 588
Debugowanie XSLT ............................................................................................... 592

XML i bazy danych ...................................................................................................... 593

FOR XML AUTO ..................................................................................................... 594
SQL Server 2005 oraz typ danych XML ................................................................... 598

Podsumowanie .......................................................................................................... 605

Rozdzia 11. IIS 7 ..................................................................................................................................... 607

Modularna architektura usugi IIS 7 ............................................................................. 607

Serwer sieci Web .................................................................................................. 609
Narzdzia do zarzdzania ....................................................................................... 612
Usuga publikowania za pomoc protokou FTP ........................................................ 612

Rozszerzalna struktura usugi IIS 7 .............................................................................. 613
Zintegrowany potok przetwarzania da serwera IIS 7 i rodowiska ASP.NET ................. 613
Przygotowanie serwera WWW zgodnie z wasnymi potrzebami ........................................ 615

Zalenoci pakietów instalacyjnych ......................................................................... 616
Instalacja usugi IIS 7 w systemie Windows Vista .................................................... 617
Instalacja usugi IIS 7 w systemie Windows Server 2008 ......................................... 617
Instalacja za pomoc programu wiersza polecenia ................................................... 618
Instalacja nienadzorowana ..................................................................................... 619
Uaktualnianie systemu .......................................................................................... 620

Meneder internetowych usug informacyjnych (IIS) ....................................................... 620

Pule aplikacji ........................................................................................................ 622
Witryny ................................................................................................................. 626
Hierarchiczna konfiguracja ..................................................................................... 628
Delegowanie funkcji .............................................................................................. 633

Przenoszenie aplikacji z serwera IIS 6 do serwera IIS 7 ................................................. 636
Podsumowanie .......................................................................................................... 637

Rozdzia 12. Wprowadzenie do modelu dostawców ............................................................................ 639

Zrozumienie modelu dostawców .................................................................................. 640
Model dostawców w ASP.NET 3.5 ................................................................................ 641

Ustawianie dostawcy, aby wspópracowa z Microsoft SQL Server 7.0, 2000, 2005

lub 2008 ........................................................................................................... 643

Dostawcy czonkostwa ........................................................................................... 649
Dostawcy ról ......................................................................................................... 653
Dostawca personalizacji ........................................................................................ 658
Dostawca SiteMap ................................................................................................ 659
Dostawcy SessionState ......................................................................................... 661
Dostawcy WebEvent .............................................................................................. 664
Dostawcy konfiguracji ............................................................................................ 672
Dostawca WebParts .............................................................................................. 675

Konfigurowanie dostawców ......................................................................................... 677
Podsumowanie .......................................................................................................... 678

background image

10

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Rozdzia 13. Rozszerzanie modelu dostawców ................................................................................... 679

Dostawcy s jedn warstw w rozbudowanej architekturze ............................................. 679
Modyfikacja programowa z wykorzystaniem atrybutów ................................................... 680

Uatwienie wprowadzania hasa za pomoc SqlMembershipProvider .......................... 681
Nakadanie silnych restrykcji na haso za pomoc SqlMembershipProvider ................ 684

Analiza ProviderBase .................................................................................................. 685
Tworzenie wasnych klas dostawców ............................................................................ 687

Tworzenie aplikacji CustomProvider ........................................................................ 687
Tworzenie wymaganego szkieletu klasy ................................................................... 689
Tworzenie magazynu danych XML ........................................................................... 692
Definiowanie instancji dostawcy w pliku web.config .................................................. 693
Niezaimplementowane metody i waciwoci klasy MembershipProvider .................... 694
Implementacja metod i waciwoci klasy MembershipProvider ................................. 695
Korzystanie z XmlMembershipProvider podczas logowania uytkownika ..................... 703

Rozszerzanie istniejcych dostawców ........................................................................... 704

Ograniczenie moliwoci zarzdzania rolami

za pomoc nowego dostawcy LimitedSqlRoleProvider ............................................ 705

Korzystanie z nowej klasy dostawcy LimitedSqlRoleProvider ..................................... 709

Podsumowanie .......................................................................................................... 713

Rozdzia 14. Nawigacja portalu ..............................................................................................................715

Mapy portalu w postaci plików XML ............................................................................. 716
Kontrolka serwerowa SiteMapPath .............................................................................. 718

Waciwo PathSeparator ..................................................................................... 720
Waciwo PathDirection ...................................................................................... 722
Waciwo ParentLevelsDisplayed ......................................................................... 722
Waciwo ShowToolTips ..................................................................................... 723
Elementy potomne kontrolki SiteMapPath ............................................................... 723

Kontrolka serwerowa TreeView .................................................................................... 724

Wbudowane style kontrolki TreeView ...................................................................... 728
Badanie skadników kontrolki TreeView ................................................................... 729
Wizanie kontrolki TreeView z plikiem XML .............................................................. 729
Wybór wielu opcji w kontrolce TreeView ................................................................... 732
Przypisywanie do kontrolki TreeView wasnych ikon .................................................. 736
Uywanie linii w celu poczenia wzów .................................................................. 737
Programistyczna praca z kontrolk TreeView ............................................................ 739

Kontrolka serwerowa Menu ......................................................................................... 745

Przypisywanie do kontrolki Menu rónych stylów ...................................................... 747
Zdarzenia Menu .................................................................................................... 752
Wizanie kontrolki Menu z plikiem XML ................................................................... 753

Dostawca danych SiteMap .......................................................................................... 755

ShowStartingNode ................................................................................................ 755
StartFromCurrentNode ........................................................................................... 756
StartingNodeOffset ............................................................................................... 757
StartingNodeUrl .................................................................................................... 758

SiteMap API ............................................................................................................... 758
Mapowanie URL ......................................................................................................... 761
Lokalizacja mapy portalu ............................................................................................. 762

Tworzenie pliku Web.sitemap korzystajcego z lokalizacji ......................................... 762
Wprowadzanie modyfikacji w pliku Web.config ......................................................... 763
Tworzenie plików podzespoów z zasobami (.resx) .................................................... 764
Testowanie wyników .............................................................................................. 765

background image

Spis

treci

11

Security trimming ....................................................................................................... 767

Ustawienie zarzdzania rolami dla administratorów .................................................. 767
Ustawianie sekcji administratorów .......................................................................... 769
Wczanie security trimming ................................................................................... 770

Zagniedanie plików SiteMap ..................................................................................... 772
Podsumowanie .......................................................................................................... 775

Rozdzia 15. Personalizacja .................................................................................................................. 777

Model personalizacji ................................................................................................... 778
Tworzenie waciwoci personalizacji ........................................................................... 779

Dodawanie prostej waciwoci personalizacji ......................................................... 779
Korzystanie z waciwoci personalizacji ................................................................. 780
Dodawanie grup waciwoci personalizacji ............................................................. 784
Korzystanie z grupowanych waciwoci personalizacji ............................................. 785
Definiowanie typów waciwoci personalizacji ........................................................ 785
Korzystanie z wasnych typów ................................................................................. 786
Ustawianie wartoci domylnych ............................................................................ 789
Tworzenie waciwoci personalizacji tylko do odczytu .............................................. 789

Personalizacja anonimowa .......................................................................................... 790

Umoliwienie anonimowej identyfikacji uytkowników ............................................... 790
Praca z anonimow identyfikacj ............................................................................ 793
Anonimowe opcje waciwoci personalizacji ........................................................... 794
Uwagi na temat przechowywania profilów anonimowych uytkowników ....................... 795

Programowy dostp do personalizacji ........................................................................... 796

Migracja uytkowników anonimowych ...................................................................... 796
Personalizacja profilów .......................................................................................... 798
Okrelanie, czy korzysta z automatycznego zapisu .................................................. 799

Dostawcy personalizacji .............................................................................................. 800

Praca z SQL Server Express Edition ........................................................................ 800
Praca z Microsoft SQL Server 7.0, 2000, 2005, 2008 ............................................. 801
Korzystanie z wielu dostawców ............................................................................... 804

Zarzdzanie profilami aplikacji ..................................................................................... 804

Waciwoci klasy ProfileManager .......................................................................... 805
Metody klasy ProfileManager ................................................................................. 805
Tworzenie strony ProfileManager.aspx .................................................................... 806
Omówienie kodu strony ProfileManager.aspx ........................................................... 809
Uruchomienie strony ProfileManager.aspx ............................................................... 811

Podsumowanie .......................................................................................................... 812

Rozdzia 16. Czonkostwo i zarzdzanie rolami ....................................................................................813

Uwierzytelnianie ......................................................................................................... 814
Autoryzacja ................................................................................................................ 814
Uwierzytelnianie ASP.NET 3.5 ...................................................................................... 814

Ustalanie czonkostwa na portalach ........................................................................ 814
Wstawianie uytkowników ...................................................................................... 818
Pobieranie danych uwierzytelniajcych .................................................................... 833
Praca z zarejestrowanymi uytkownikami ................................................................. 841
Pokazywanie liczby uytkowników online .................................................................. 843
Obsuga hase ...................................................................................................... 845

Autoryzacja ASP.NET 3.5 ............................................................................................. 850

Korzystanie z kontrolki serwerowej LoginView .......................................................... 850
Konfiguracja systemu zarzdzania rolami na stronie ................................................ 853

background image

12

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Dodawanie i pobieranie ról w aplikacji .................................................................... 856
Usuwanie ról ........................................................................................................ 858
Dodawanie uytkowników do ról ............................................................................. 859
Pobieranie wszystkich uytkowników okrelonej roli ................................................. 860
Pobieranie wszystkich ról okrelonego uytkownika .................................................. 862
Usuwanie uytkowników z ról ................................................................................. 863
Sprawdzanie, czy uytkownicy przypisani s do ról ................................................... 863
Wyjanienie sposobu buforowania ról ..................................................................... 865

Korzystanie z Web Site Administration Tool .................................................................. 866
Publiczne metody API czonkostwa ............................................................................... 867
Publiczne metody API ról ............................................................................................. 867
Podsumowanie .......................................................................................................... 868

Rozdzia 17. Platformy portalowe oraz Web Parts ............................................................................. 869

Wprowadzenie do Web Parts ....................................................................................... 870
Tworzenie dynamicznych i modularnych portali .............................................................. 871

Wprowadzenie do kontrolki WebPartManager ........................................................... 872
Praca z ukadami stref ........................................................................................... 873
Omówienie kontrolki WebPartZone ......................................................................... 877
Zezwolenie uytkownikowi na zmian trybu strony .................................................... 879
Modyfikacja stref .................................................................................................. 891

Praca z klasami platformy portalowej ........................................................................... 898
Tworzenie wasnych kontrolek Web Part ....................................................................... 902
czenie Web Parts .................................................................................................... 908

Tworzenie dostawcy Web Part ................................................................................ 909
Tworzenie kontrolki Web Part konsumenta .............................................................. 912
czenie obiektów Web Parts na stronie ASP.NET .................................................... 914
Trudnoci podczas pracy z kontrolkami Web Part oraz stronami wzorcowymi .............. 917

Podsumowanie .......................................................................................................... 918

Rozdzia 18. Projekt HTML oraz CSS w ASP.NET ...................................................................................919

Uwagi ........................................................................................................................ 920
Ogólne informacje na temat HTML oraz CSS ................................................................. 920

Wprowadzenie do CSS ........................................................................................... 921
Tworzenie arkuszy stylów ....................................................................................... 922
Reguy CSS .......................................................................................................... 925
Dziedziczenie CSS ................................................................................................. 933
Ukad i pooenie elementów .................................................................................. 935
Praca z HTML oraz CSS w Visual Studio .................................................................. 943
ASP.NET 2.0 CSS — Friendly Control Adapters ........................................................ 951

Podsumowanie .......................................................................................................... 951

Rozdzia 19. ASP.NET AJAX .................................................................................................................... 953

Zrozumienie potrzeby stosowania AJAX ........................................................................ 953
Przed AJAX ................................................................................................................. 954

AJAX zmienia ten stan rzeczy ................................................................................. 955

ASP.NET AJAX oraz Visual Studio 2008 ........................................................................ 959

Technologie po stronie klienta ............................................................................... 959
Technologie dziaajce po stronie serwera .............................................................. 960
Tworzenie aplikacji za pomoc ASP.NET AJAX .......................................................... 961

background image

Spis

treci

13

Aplikacje ASP.NET AJAX .............................................................................................. 962

Tworzenie prostej strony ASP.NET niekorzystajcej z AJAX ........................................ 964
Tworzenie prostej strony ASP.NET z uyciem AJAX .................................................... 965

Kontrolki ASP.NET AJAX po stronie serwera .................................................................. 971

Kontrolka ScriptManager ....................................................................................... 972
Kontrolka ScriptManagerProxy ................................................................................ 974
Kontrolka Timer .................................................................................................... 975
Kontrolka UpdatePanel .......................................................................................... 977
Kontrolka UpdateProgress ..................................................................................... 982

Korzystanie z wielu kontrolek UpdatePanel ................................................................... 985
Podsumowanie .......................................................................................................... 988

Rozdzia 20. ASP.NET AJAX Control Toolkit .......................................................................................... 989

Pobieranie i instalacja ................................................................................................ 989

Nowe wzorce Visual Studio .................................................................................... 991
Dodawanie nowych kontrolek do okna narzdziowego Visual Studio 2008 ................. 991

Kontrolki ASP.NET AJAX .............................................................................................. 993

Kontrolki rozszerzajce ASP.NET AJAX Control Toolkit .............................................. 996
AlwaysVisibleControlExtender ................................................................................. 996
AnimationExtender ................................................................................................ 999
AutoCompleteExtender ........................................................................................ 1000
CalendarExtender ................................................................................................ 1004
CollapsiblePanelExtender .................................................................................... 1005
ConfirmButtonExtender oraz ModalPopupExtender ................................................. 1007
DragPanelExtender .............................................................................................. 1009
DropDownExtender .............................................................................................. 1011
DropShadowExtender .......................................................................................... 1013
DynamicPopulateExtender ................................................................................... 1015
FilteredTextBoxExtender ...................................................................................... 1018
HoverMenuExtender ............................................................................................ 1020
ListSearchExtender ............................................................................................. 1021
MaskedEditExtender oraz MaskedEditValidator ...................................................... 1023
MutuallyExclusiveCheckBoxExtender ..................................................................... 1026
NumericUpDownExtender ..................................................................................... 1027
PagingBulletedListExtender .................................................................................. 1028
PopupControlExtender ......................................................................................... 1029
ResizableControlExtender .................................................................................... 1031
RoundedCornersExtender .................................................................................... 1033
SliderExtender .................................................................................................... 1035
SlideShowExtender ............................................................................................. 1036
TextBoxWatermarkExtender ................................................................................. 1039
ToggleButtonExtender .......................................................................................... 1041
UpdatePanelAnimationExtender ............................................................................ 1042
ValidationCalloutExtender .................................................................................... 1043

Kontrolki serwerowe ASP.NET AJAX Control Toolkit ...................................................... 1045

Kontrolka Accordion ............................................................................................ 1045
Kontrolka NoBot ................................................................................................. 1047
Kontrolka PasswordStrength ................................................................................ 1049
Kontrolka Rating ................................................................................................. 1050
Kontrolka TabContainer ....................................................................................... 1052

Podsumowanie ........................................................................................................ 1053

background image

14

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Rozdzia 21. Bezpieczestwo ...............................................................................................................1055

Uwierzytelnianie i autoryzacja .................................................................................... 1056
Techniki uwierzytelniania ........................................................................................... 1056

Wze <authentication> ....................................................................................... 1057
Uwierzytelnianie Windows .................................................................................... 1058
Uwierzytelnianie na podstawie formularzy .............................................................. 1068
Uwierzytelnianie z wykorzystaniem mechanizmu Microsoft Passport ........................ 1079

Uwierzytelnianie w dostpie do okrelonych plików i katalogów .................................... 1079
Autoryzacja programowa ........................................................................................... 1080

Waciwo User.Identity ..................................................................................... 1081
Metoda User.IsInRole() ........................................................................................ 1082
Uzyskiwanie dodatkowych informacji z obiektu WindowsIdentity .............................. 1083

Element <identity> i tryb personifikacji ....................................................................... 1086
Zabezpieczenia serwera IIS ....................................................................................... 1089

Ograniczenie zakresu adresów IP i nazw domenowych ............................................ 1089
Rozszerzenia plików ............................................................................................ 1091
Korzystanie z konsoli ASP.NET MMC ..................................................................... 1094
Konsola menedera usugi IIS 7.0 ........................................................................ 1095

Podsumowanie ........................................................................................................ 1096

Rozdzia 22. Zarzdzanie informacjami o stanie aplikacji ................................................................1097

Jakie opcje s do wyboru? ........................................................................................ 1098
Obiekt Session platformy ASP.NET ............................................................................ 1101

Sesje a model zdarze ........................................................................................ 1101
Konfiguracja mechanizmu zarzdzania sesj ......................................................... 1103
Sesje wewntrzprocesowe ................................................................................... 1104
Sesje pozaprocesowe .......................................................................................... 1113
Sesje zapisywane w serwerach SQL ..................................................................... 1119
Rozszerzenie sesji o inne mechanizmy dostawców danych ..................................... 1123
Sesje bez plików cookie ...................................................................................... 1124
Wybór odpowiedniego sposobu podtrzymywania sesji ............................................. 1126

Obiekt Application .................................................................................................... 1126
acuchy zapytania .................................................................................................. 1127
Dane cookie ............................................................................................................ 1128
Odsyanie danych i przekazywanie danych midzy stronami .......................................... 1129
Ukryte pola formularza, mechanizmy ViewState oraz ControlState ................................ 1131
Wykorzystanie kolekcji HttpContext.Current.Items

do przechowywania krótkookresowych wartoci ........................................................ 1136

Podsumowanie ........................................................................................................ 1138

Rozdzia 23. Buforowanie .................................................................................................................... 1139

Buforowanie ............................................................................................................ 1139

Buforowanie danych wyjciowych .......................................................................... 1140
Buforowanie czci strony (kontrolek uytkownika) ................................................. 1143
Podmiana wartoci w buforowanej treci ............................................................... 1145
Buforowanie po stronie klienta i obiekt HttpCachePolicy ......................................... 1147

Buforowanie programowe .......................................................................................... 1149

Buforowanie danych za pomoc obiektu Cache ...................................................... 1150
Nadzorowanie pracy pamici podrcznej rodowiska ASP.NET ................................ 1151
Zalenoci wpisów pamici podrcznej ................................................................. 1151

background image

Spis

treci

15

Zalenoci bufora SQL .............................................................................................. 1157

Dodanie bazy danych do listy bazy danych uwzgldnianych w zalenociach bufora SQL ... 1158
Dodanie tabeli do list tabel uwzgldnianych w zalenociach bufora SQL ................. 1159
Sprawdzenie zmian w konfiguracji usugi SQL Server 2000 ..................................... 1159
Analiza wczonych tabel ..................................................................................... 1161
Usunicie tabeli z listy tabel uwzgldnianych w zalenociach bufora SQL ............... 1161
Usunicie bazy danych z listy baz uwzgldnianych w zalenociach bufora SQL ........ 1161
Zalenoci bufora SQL w bazie danych SQL Server 2005 ....................................... 1162

Konfiguracja aplikacji ASP.NET .................................................................................. 1163
Testowanie mechanizmu uniewaniania danych bufora SQL ......................................... 1165

Odwoanie do wicej ni jednej tabeli w kodzie strony ............................................. 1168
Powizanie zalenoci bufora SQL z obiektem Request .......................................... 1168
Powizanie zalenoci bufora SQL z obiektem Cache ............................................. 1169

Podsumowanie ........................................................................................................ 1172

Rozdzia 24. Debugowanie i obsuga bdów ...................................................................................... 1173

Wsparcie w czasie projektowania ............................................................................... 1173

Powiadomienia o bdach skadni ......................................................................... 1174
Okna Immediate i Command ................................................................................ 1176
Lista zada ........................................................................................................ 1177

ledzenie kodu ........................................................................................................ 1178

Klasy System.Diagnostic.Trace oraz Page.Trace .................................................... 1178
ledzenie kodu na poziomie strony ....................................................................... 1179
ledzenie pracy aplikacji ...................................................................................... 1179
Przegldanie danych wynikowych .......................................................................... 1179
ledzenie pracy komponentów ............................................................................. 1184
Przekazywanie danych ze ledzenia kodu .............................................................. 1186
Obiekty TraceListener .......................................................................................... 1186
Przeczniki diagnostyczne ................................................................................... 1192
Zdarzenia sieciowe .............................................................................................. 1194

Debugowanie ........................................................................................................... 1196

Potrzebne elementy ............................................................................................. 1196
Usugi IIS i ASP.NET Development Server .............................................................. 1198
Uruchomienie sesji debugowania ......................................................................... 1199
Nowe narzdzia uatwiajce debugowanie ............................................................. 1203
Debugowanie klienckiego kodu JavaScript ............................................................. 1207
Debugowanie procedur skadowanych SQL ............................................................ 1209

Wyjtki i obsuga bdów ........................................................................................... 1210

Przechwytywanie wyjtku na stronie ...................................................................... 1211
Obsuga wyjtków aplikacji ................................................................................... 1212
Kody statusowe HTTP .......................................................................................... 1213

Podsumowanie ........................................................................................................ 1215

Rozdzia 25. Pliki i strumienie ............................................................................................................. 1217

Dyski, katalogi i pliki ................................................................................................. 1218

Klasa DriveInfo ................................................................................................... 1218
Klasy Directory i DirectoryInfo .............................................................................. 1221
Klasy File i FileInfo .............................................................................................. 1228
Przetwarzanie cieek dostpu ............................................................................. 1233
Waciwoci plików i katalogów, ich atrybuty oraz listy kontroli dostpu ................... 1237

background image

16

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Odczyt i zapis plików ................................................................................................. 1244

Strumienie ......................................................................................................... 1245
Obiekty odczytu i zapisu ...................................................................................... 1249
Kompresowanie danych strumieni ........................................................................ 1254

Wykorzystanie portów szeregowych ............................................................................ 1260
Komunikacja sieciowa .............................................................................................. 1261

Klasy WebRequest i WebResponse ...................................................................... 1262
Przesyanie poczty elektronicznej .......................................................................... 1269

Podsumowanie ........................................................................................................ 1270

Rozdzia 26. Kontrolki uytkownika i kontrolki serwerowe ............................................................. 1271

Kontrolki uytkownika ............................................................................................... 1272

Utworzenie kontrolki uytkownika ......................................................................... 1272
Interakcje z kontrolkami uytkownika .................................................................... 1275
Dynamiczne adowanie kontrolek uytkownika ....................................................... 1277

Kontrolki serwerowe ................................................................................................. 1283

Przygotowanie projektu kontrolki WebControl ......................................................... 1283
Atrybuty sterujce ............................................................................................... 1289
Wywietlanie kontrolki ......................................................................................... 1291
Dodawanie atrybutów znaczników ......................................................................... 1295
Definicje stylu HTML ............................................................................................ 1297
Motywy tematyczne i skórki .................................................................................. 1300
Dodanie elementów kodu klienckiego ................................................................... 1302
Wykrywanie parametrów przegldarki .................................................................... 1312
Mechanizm ViewState ......................................................................................... 1315
Wywoywanie zdarze powodujcych odesanie strony ............................................ 1319
Obsuga odsyanych danych ................................................................................. 1323
Kontrolki zoone ................................................................................................ 1325
Kontrolki szablonowe .......................................................................................... 1328
Zachowanie kontrolki w rodowisku projektowym ................................................... 1336

Podsumowanie ........................................................................................................ 1356

Rozdzia 27. Moduy HTTP i obsuga da ..........................................................................................1357

Przetwarzanie da HTTP ......................................................................................... 1357

IIS 5 (IIS 6) i ASP.NET ......................................................................................... 1358
IIS 7 i ASP.NET ................................................................................................... 1358
Przetwarzanie da ASP.NET .............................................................................. 1359

Moduy HTTP ............................................................................................................ 1360

Zmiana wynikowych danych HTTP ......................................................................... 1362
Przepisywanie adresów URL ................................................................................. 1365
Symbole wieloznaczne ......................................................................................... 1369
Procedury obsugi da HTTP .............................................................................. 1371
Odwzorowanie rozszerzenia pliku w serwerze IIS .................................................... 1376

Podsumowanie ........................................................................................................ 1379

Rozdzia 28. Obiekty biznesowe .......................................................................................................... 1381

Korzystanie z obiektów biznesowych w rodowisku ASP.NET 3.5 .................................. 1381

Tworzenie wstpnie skompilowanych obiektów biznesowych platformy .NET ............. 1382
Wykorzystanie wstpnie skompilowanych obiektów biznesowych w aplikacji ASP.NET .. 1385

Wykorzystanie komponentów COM w rodowisku .NET ................................................ 1387

Komponent Runtime Callable Wrapper .................................................................. 1387
Wykorzystanie obiektów COM w kodzie ASP.NET .................................................... 1389

background image

Spis

treci

17

Obsuga bdów .................................................................................................. 1394
Wdraanie komponentów COM w aplikacjach .NET ................................................. 1397

Odwoania do kodu .NET z poziomu kodu niezarzdzanego .......................................... 1399

Modu COM-Callable Wrapper ............................................................................... 1399
Wspódziaanie komponentów .NET z obiektami COM ............................................. 1402
Wczesne czy pó ne wizanie ................................................................................ 1405
Obsuga bdów .................................................................................................. 1406
Wdraanie komponentów .NET z aplikacjami COM ................................................. 1408

Podsumowanie ........................................................................................................ 1410

Rozdzia 29. Budowanie i wykorzystywanie usug ............................................................................. 1411

Komunikacja midzy rozproszonymi systemami .......................................................... 1411
Budowa prostej XML-owej usugi sieciowej .................................................................. 1414

Dyrektywa WebService ......................................................................................... 1415
Plik klasy bazowej usugi sieciowej ....................................................................... 1416
Udostpnianie zbiorów danych w formie dokumentów SOAP ................................... 1417
Interfejs usugi sieciowej ..................................................................................... 1420

Korzystanie z nieskomplikowanych XML-owych usug sieciowych .................................. 1423

Dodawanie odwoania .......................................................................................... 1424
Wywoywanie usugi sieciowej w kodzie aplikacji klienckiej ...................................... 1426

Protokoy transportowe usug sieciowych .................................................................... 1429

dania HTTP GET .............................................................................................. 1430
dania HTTP POST ............................................................................................ 1433
dania SOAP ..................................................................................................... 1434

Przecianie metod sieciowych .................................................................................. 1434
Buforowanie odpowiedzi usug sieciowych .................................................................. 1438
Nagówki SOAP ........................................................................................................ 1439

Tworzenie usug sieciowych uwzgldniajcych nagówki SOAP ................................. 1439
Wykorzystanie nagówków SOAP w odwoaniach do usugi sieciowej ........................ 1441
Wykorzystanie da SOAP 1.2 ............................................................................ 1444

Asynchroniczne odwoania do usug sieciowych ........................................................... 1446
Windows Communication Foundation ......................................................................... 1449

Krok w stron architektury bazujcej na usugach .................................................. 1450
Przegld technologii WCF ..................................................................................... 1451
Tworzenie usug WCF ........................................................................................... 1451

Aplikacja korzystajca z usugi WCF ........................................................................... 1460

Dodanie odwoania do usugi ............................................................................... 1460
Kontrakty danych ................................................................................................ 1464
Przestrzenie nazw ............................................................................................... 1469

Podsumowanie ........................................................................................................ 1469

Rozdzia 30. Lokalizacja oprogramowania ......................................................................................... 1471

Ustawienia kulturowe i regionalne .............................................................................. 1471

Typy kulturowe .................................................................................................... 1472
Wtki ASP.NET .................................................................................................... 1473
Ustawienia kulturowe serwera .............................................................................. 1477
Ustawienia kulturowe klienta ............................................................................... 1478
Tumaczenie wartoci i zmiana sposobu zachowania aplikacji ................................. 1480

Pliki zasobów ASP.NET 3.5 ....................................................................................... 1488

Wykorzystanie zasobów lokalnych ......................................................................... 1488
Wykorzystanie zasobów globalnych ....................................................................... 1495

Edytor zasobów ........................................................................................................ 1498
Podsumowanie ........................................................................................................ 1498

background image

18

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Rozdzia 31. Konfiguracja .....................................................................................................................1499

Ogólne informacje na temat konfiguracji ..................................................................... 1500

Pliki konfiguracyjne serwera ................................................................................. 1501
Plik konfiguracyjny aplikacji .................................................................................. 1504
W jaki sposób s odczytywane ustawienia konfiguracyjne? ..................................... 1504
Wykrywanie zmian w plikach konfiguracyjnych ........................................................ 1505
Format pliku konfiguracyjnego .............................................................................. 1505

Wspólne ustawienia konfiguracyjne ............................................................................ 1506

Cigi pocze .................................................................................................... 1506
Konfiguracja stanu sesji ...................................................................................... 1508
Konfiguracja kompilacji ........................................................................................ 1512
Parametry przegldarek ....................................................................................... 1515
Niestandardowe komunikaty o bdach ................................................................. 1517
Uwierzytelnianie .................................................................................................. 1518
Identyfikacja uytkowników anonimowych .............................................................. 1522
Autoryzacja ......................................................................................................... 1523
Blokowanie ustawie konfiguracyjnych .................................................................. 1525
Konfiguracja strony ASP.NET ................................................................................ 1526
Wczane pliki ..................................................................................................... 1528
Parametry pracy rodowiska ASP.NET ................................................................... 1529
Konfiguracja procesu roboczego ASP.NET ............................................................. 1532
Przechowywanie ustawie aplikacji ....................................................................... 1534
Programowe przetwarzanie plików konfiguracyjnych ................................................ 1535
Ochrona ustawie konfiguracyjnych ...................................................................... 1542
Edycja pliku konfiguracyjnego ............................................................................... 1546

Tworzenie wasnych sekcji konfiguracyjnych ................................................................ 1549

Wykorzystanie obiektu NameValueFileSectionHandler ............................................ 1549
Wykorzystanie obiektu DictionarySectionHandler ................................................... 1551
Wykorzystanie obiektu SingleTagSectionHandler .................................................... 1552
Wykorzystanie wasnej procedury obsugi ustawie konfiguracyjnych ........................ 1553

Podsumowanie ........................................................................................................ 1555

Rozdzia 32. Narzdzia monitorujce prac serwisu ........................................................................1557

Dzienniki zdarze ..................................................................................................... 1557

Odczytywanie informacji z dziennika zdarze .......................................................... 1558
Zapis informacji w dzienniku zdarze .................................................................... 1561

Wska niki wydajnoci ............................................................................................... 1563

Przegldanie liczników wydajnoci za pomoc narzdzi administracyjnych ................ 1564
Narzdzie administracyjne uruchamiane w przegldarce ......................................... 1567

ledzenie kodu aplikacji ........................................................................................... 1572
Monitorowanie kondycji aplikacji ................................................................................ 1572

Model dostawcy danych systemu monitorowania kondycji aplikacji .......................... 1573
Konfiguracja systemu monitorowania kondycji aplikacji .......................................... 1575
Zapis zdarze na podstawie parametrów konfiguracyjnych

— uruchomienie przykadowej aplikacji .............................................................. 1583

Przekazywanie zdarze do serwera SQL ................................................................ 1584
Buforowanie zdarze sieciowych ........................................................................... 1587
Wysyanie informacji o zdarzeniach za pomoc poczty elektronicznej ....................... 1590

Podsumowanie ........................................................................................................ 1595

background image

Spis

treci

19

Rozdzia 33. Administracja i zarzdzanie ..........................................................................................1597

Aplikacja ASP.NET Web Site Administration Tool ......................................................... 1597

Zakadka Home .................................................................................................. 1599
Zakadka Security ............................................................................................... 1599
Zakadka Application ........................................................................................... 1609
Zakadka Provider ............................................................................................... 1613

Konfiguracja rodowiska ASP.NET w systemie Vista .................................................... 1615

Kompilacja platformy .NET ................................................................................... 1616
Globalizacja platformy .NET .................................................................................. 1617
Profil platformy .NET ............................................................................................ 1618
Role platformy .NET ............................................................................................ 1619
Poziomy zaufania platformy .NET .......................................................................... 1620
Uytkownicy platformy .NET .................................................................................. 1620
Ustawienia aplikacji ............................................................................................ 1622
Cigi poczenia .................................................................................................. 1622
Strony i formanty ................................................................................................ 1624
Dostawcy ........................................................................................................... 1624
Stan sesji ........................................................................................................... 1624
Poczta e-mail SMTP ............................................................................................. 1626

Podsumowanie ........................................................................................................ 1626

Rozdzia 34. Pakowanie i instalacja aplikacji .....................................................................................1627

Instalowane elementy ............................................................................................... 1628
Czynnoci poprzedzajce instalacj ........................................................................... 1628
Metody instalowania aplikacji WWW ........................................................................... 1629

Program XCopy ................................................................................................... 1629
Opcja Copy Web Site rodowiska Visual Studio ..................................................... 1632
Instalowanie wstpnie skompilowanej aplikacji WWW ............................................ 1636
Utworzenie programu instalatora .......................................................................... 1638

Szczegóowa analiza opcji instalatora ......................................................................... 1648

Waciwoci projektu instalacyjnego ..................................................................... 1649
Edytor systemu plików ......................................................................................... 1653
Edytor rejestru .................................................................................................... 1657
Edytor typów plików ............................................................................................. 1658
Edytor interfejsu uytkownika ............................................................................... 1659
Edytor niestandardowych operacji ......................................................................... 1661
Edytor warunków uruchomienia ............................................................................ 1663

Podsumowanie ........................................................................................................ 1664

Dodatek A Wykorzystanie projektów wczeniejszych wersji ASP.NET ...........................................1665

Przenoszenie nie jest trudne ..................................................................................... 1665

Równolega praca wielu wersji platformy ............................................................... 1666
Aktualizacja aplikacji ASP.NET .............................................................................. 1666

czenie wersji — uwierzytelnianie na bazie formularzy ............................................... 1668
Aktualizacja — zarezerwowane foldery ASP.NET .......................................................... 1669
Format XHTML stron ASP.NET 3.5 ............................................................................. 1670
Brak plików .js w ASP.NET 3.5 ................................................................................... 1672
Konwertowanie aplikacji ASP.NET 1.x w rodowisku Visual Studio 2008 ....................... 1673
Przeniesienie aplikacji ze rodowiska ASP.NET 2.0 do 3.5 ........................................... 1678

background image

20

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Dodatek B Narzdzia wspomagajce prac w rodowisku ASP.NET ................................................ 1681

atwiejsze debugowanie ........................................................................................... 1682

Firebug ............................................................................................................... 1682
YSlow ................................................................................................................ 1683
IE Developer Toolbar oraz Firefox WebDeveloper .................................................... 1685
Aptana Studio — rodowisko programistyczne jzyka JavaScript ............................. 1686
Narzdzia optymalizacji kodu — dotTrace i ANTS ................................................... 1687

róda informacji ...................................................................................................... 1689

PositionIsEverything.net, QuirksMode.org oraz HTMLDog.com ................................ 1689
Visibone ............................................................................................................. 1689
www.asp.net ....................................................................................................... 1689

Czyszczenie kodu ..................................................................................................... 1690

Refactor! for ASP.NET .......................................................................................... 1690
Code Style Enforcer ............................................................................................. 1691
Packer for .NET — narzdzie zmniejszajce rozmiar skryptu JavaScript .................... 1692

Dodatki do rodowiska Visual Studio ......................................................................... 1694

Dodatek do Visual Studio ASPX Edit Helper ........................................................... 1694
Power Toys Pack Installer .................................................................................... 1695

Rozszerzanie rodowiska ASP.NET ............................................................................. 1696

ASP.NET AJAX Control Toolkit ............................................................................... 1696
ELMAH — rejestracja i obsuga bdów ................................................................. 1697
ISAPI_Rewrite ..................................................................................................... 1698

Narzdzia programistyczne ogólnego przeznaczenia .................................................... 1700

Internetowy konwerter kodu ................................................................................. 1700
WinMerge i narzdzia wyszukujce rónice w kodzie ............................................... 1701
Reflector ............................................................................................................ 1701
CR_Documentor .................................................................................................. 1702
Process Explorer ................................................................................................. 1703

Podsumowanie ........................................................................................................ 1704

Dodatek C Silverlight ...........................................................................................................................1705

Rozszerzanie aplikacji ASP.NET za pomoc SilverLight ................................................ 1705
Krok 1. Prosta aplikacja ASP.NET .............................................................................. 1707

Wyszukiwanie grafiki wektorowej .......................................................................... 1708
Konwertowanie grafiki wektorowej na XAML ........................................................... 1711
Narzdzia do podgldu i edycji XAML .................................................................... 1712
Integracja z istniejc stron ASP.NET .................................................................. 1719
Obsuga zdarze Silverlight w JavaScript ............................................................... 1720
Dostp do elementów Silverlight w zdarzeniach JavaScript ..................................... 1722

Podsumowanie ........................................................................................................ 1724

Dodatek D Serwisy internetowe o ASP.NET ........................................................................................1725

Blogi autorów ksiki ................................................................................................ 1725
Inne blogi na temat ASP.NET ..................................................................................... 1725
Witryny internetowe .................................................................................................. 1726

Skorowidz ............................................................................................................................................1727

background image

4

Walidacyjne kontrolki serwerowe

Patrzc na okno Toolbox w Visual Studio 2008 — zwaszcza wtedy, gdy czyta si rozdziay
2. i 3., w których omówiono róne kontrolki serwerowe pozostajce do dyspozycji — mona
by poraonym iloci kontrolek serwerowych udostpnianych przez ASP.NET 3.5. W ni-
niejszym rozdziale omówiono specyficzny typ kontrolek serwerowych, które mona znale
w oknie Toolbox: walidacyjne kontrolki serwerowe.

Walidacyjne kontrolki serwerowe s seri kontrolek, które pozwalaj pracowa z danymi
wprowadzonymi przez uytkowników kocowych w elementach formularza tworzonej
aplikacji. Kontrolki pozwalaj zadba o poprawno danych wpisywanych na formularzu.

Zanim przejdziemy do omówienia sposobów ich uycia, przyjrzyjmy si dokadnie proce-
sowi walidacji.

Zrozumienie procesu walidacji

Ludzie tworzyli aplikacje internetowe przez wiele lat. Zwykle byo to spowodowane po-
trzeb udostpnienia lub pobrania informacji. W tym rozdziale skupimy si na aspekcie po-
bierania informacji przez aplikacje internetowe. Podczas pobierania danych w aplikacji
wane jest to, aby byy to dane poprawne. Jeeli dane nie s poprawne, wtedy nie ma
wikszego sensu w gromadzeniu ich.

Walidacja jest procesem wielostopniowym i stanowi zbiór regu, które nakada si na zbie-
rane dane. Tych regu moe by duo lub mao i mog by cise lub do lune. Zaley
to jedynie od potrzeb twórcy aplikacji. Nie istnieje aden perfekcyjny sposób walidacji, po-
niewa niektórzy uytkownicy mog znale jaki sposób oszukania tych procedur, bez
wzgldu na zastosowane reguy. Cay problem tkwi w znalezieniu zotego rodka pomidzy
niewielk iloci zasad oraz cis kontrol, która nie bdzie miaa wpywu na uyteczno
aplikacji.

background image

240

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Dane zbierane do procesu walidacji pochodz z formularzy aplikacji. Formularze zbudo-
wane s z rónych typów elementów HTML, które s tworzone za pomoc tradycyjnych
elementów HTML, kontrolek serwerowych HTML ASP.NET oraz kontrolek serwerowych
Web ASP.NET. Wszystko to na kocu i tak staje si zbiorem elementów HTML wchodz-
cym w skad formularzy. S to na przykad pola tekstowe, przyciski opcji, przyciski wyboru,
listy rozwijane i wiele innych.

Pracujc z przykadami zaprezentowanymi w tym rozdziale, bdzie mona zauway róne
typy regu walidacyjnych, które mona doda do elementów formularza. Naley pamita ,
e nie ma moliwoci sprawdzenia, czy dane s prawdziwe. Mona jedynie wprowadzi zasady,
które pomagaj odpowiedzie na pytania typu:

Q

Czy co zostao wpisane w polu tekstowym?

Q

Czy dane wpisane w polu tekstowym posiadaj format adresu e-mail?

Warto take zwróci uwag na to, e moliwe jest zastosowanie wicej ni jednej reguy
walidacji do elementu formularza HTML (przykady zostan pokazane w dalszej czci tego
rozdziau). W rzeczywistoci do kadego elementu mona zastosowa tyle regu walidacyj-
nych, ile tylko potrzeba. Dodanie kolejnych regu do elementów zwiksza poziom sprawdzania
poprawnoci danych.

Naley pamita , e pobieranie danych na stronach internetowych jest jedn z najwaniej-
szych funkcji internetu. Naley wic zadba o to, aby zebrane dane posiaday pewn warto
i miay jakie znaczenie. Mona o to zadba , eliminujc przypadki, w których zbierane in-
formacje nie speniaj nakrelonych regu.

Walidacja po stronie klienta

a walidacja po stronie serwera

Pocztkujcy twórcy aplikacji internetowych mog nie by wiadomi rónicy pomidzy
walidacj po stronie klienta i walidacj po stronie serwera. Przypu my, e uytkownik
kocowy po uzupenieniu kontrolek formularza naciska przycisk Zatwierd . ASP.NET pakuje
formularz do postaci dania i wysya je do serwera, na którym ta aplikacja jest umiesz-
czona. W tym punkcie cyklu danie – odpowied mona przeprowadzi proces sprawdzania
poprawnoci wprowadzonych informacji. Takie podejcie nazywamy walidacj po stronie
serwera
, poniewa wszystko dzieje si na serwerze.

Z drugiej strony mona umieci skrypt (zwykle pod postaci kodu JavaScript). Wysyany
jest on razem ze stron do uytkownika kocowego i umoliwia sprawdzenie poprawnoci
danych wprowadzonych do formularza, zanim zostanie on przesany do serwera aplikacji.
W tym przypadku mamy do czynienia z walidacj po stronie klienta.

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

241

Oba typy walidacji maj swoje wady i zalety. Programici Active Server Pages 2.0/3.0
(w czasach klasycznego ASP) mieli wiadomo wad i zalet tych rozwiza, poniewa cay
proces sprawdzania poprawnoci danych wykonywali wasnorcznie. Wielu programistów
spdzio wiele dni z klasycznym ASP. W tym czasie wprowadzili róne techniki walidacji,
które speniaj pewne wymagania zwizane z wydajnoci i bezpieczestwem.

Walidacja po stronie klienta jest szybka. Uytkownik natychmiast otrzymuje odpowied.
To co, czego spodziewaj si uytkownicy kocowi na kadym formularzu. Jeeli z for-
mularzem co jest nie tak, wtedy walidacja po stronie klienta powoduje, e uytkownik
natychmiast jest o tym informowany. Walidacja po stronie klienta przerzuca obowizek
przetwarzania danych i sprawdzania ich poprawnoci na klienta. Oznacza to, e nie trzeba
uywa mocy obliczeniowej na serwerze do przetwarzania tych samych informacji, poniewa
klient wykona ju ca prac.

Jak mona si domyli na podstawie powyszego, walidacja po stronie klienta jest form
sprawdzania poprawnoci bardziej naraon na róne niebezpieczestwa. Gdy strona gene-
rowana jest w przegldarce uytkownika, wtedy mona do atwo podejrze jej róda
(poprzez kliknicie prawym przyciskiem myszy i wybranie opcji Poka róda). Po wyko-
naniu takiej czynno mona zobaczy cay kod HTML strony. Oprócz tego mona obej-
rze cay kod JavaScript, który na tej stronie zosta umieszczony. Jeeli poprawno danych
sprawdzana jest po stronie klienta, to dla sprawnego hakera nie stanowi adnego problemu
odesanie spreparowanego formularza (zawierajcego wartoci, które s przez niego po-
dane). Serwer moe je wtedy odebra jako prawidowe. Istniej take takie przypadki, gdy
uytkownik zwyczajnie zablokuje w swojej przegldarce obsug skryptów — w ten sposób
moe uczyni walidacj cakowicie bezuyteczn.

W zwizku z powyszym walidacja po stronie klienta powinna by rozwaana w katego-
riach wygody i uatwienia ycia uytkownikowi kocowemu. Nigdy nie powinien to by
mechanizm zapewniajcy aplikacji bezpieczestwo.

Bezpieczniejsz form sprawdzania poprawnoci danych jest walidacja po stronie serwera.
Walidacja po stronie serwera oznacza, e wszystkie procedury kontrolujce poprawno
wykonywane s na serwerze, a nie na kliencie. Jest to bezpieczniejsze, poniewa tego etapu
nie da si w atwy sposób omin . Dane na formularzu sprawdzane s przez kod serwera
(C# lub VB) na serwerze. Jeeli formularz nie jest prawidowy, wtedy odsyany jest do
klienta jako nieprawidowy. Jest to bezpieczniejsze, ale taka walidacja po stronie serwera
moe by wolna. Dzieje si tak, poniewa strona musi by przesana do zdalnego komputera
i tam sprawdzona. Uytkownik kocowy na pewno nie bdzie zadowolony, gdy po odczekaniu
20 sekund na odpowied dowie si, e wpisa swój adres e-mail w nieprawidowym formacie.

Jaka jest zatem prawidowa cieka? Generalnie obie s dobre! Najlepszym podejciem jest
wykonanie walidacji po stronie klienta, a potem, po przejciu przez ten pierwszy etap
i przesaniu formularza na serwer, wykonywana jest walidacja po stronie serwera. Takie po-
dejcie jest najlepsze sporód wszystkich. Jest bezpieczne, poniewa hakerzy nie mog tak
zwyczajnie omin procesu walidacji. Mona oszuka walidacj po stronie klienta, ale dane
i tak zostan jeszcze raz sprawdzone po przesaniu ich na serwer. Taki sposób walidacji jest
take do efektywny — pozwala uzyska szybko i elegancj walidacji po stronie klienta.

background image

242

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Kontrolki walidacyjne ASP.NET

W czasach klasycznego ASP.NET programici powicali duo czasu na obsug rónych
schematów walidacji. Z tego powodu wraz z pierwsz wersj ASP.NET wprowadzono seri
walidacyjnych kontrolek serwerowych, które pozwalaj w atwy sposób przeprowadzi
sprawdzenie poprawnoci danych formularza.

Samo wprowadzenie walidacyjnych kontrolek serwerowych przez ASP.NET to nie wszystko.
Kontrolki s wyjtkowo sprytne. Jak ju zostao wczeniej napisane, jednym z zada pro-
gramistów klasycznego ASP byo zadecydowanie, gdzie przeprowadza walidacj — czy
na kliencie, czy na serwerze. Walidacyjne kontrolki serwerowe eliminuj ten problem, po-
niewa ASP.NET wykrywa przegldark i na tej podstawie podejmuje waciw decyzj.

Oznacza to, e jeeli aplikacja obsuguje JavaScript, wtedy ASP.NET przeprowadza wali-
dacj po stronie klienta. Jeeli przegldarka klienta nie obsuguje JavaScript i walidacji po
stronie klienta, wtedy kod JavaScript jest pomijany, a caa walidacja przeprowadzana jest
po stronie serwera.

Najlepsze z tego wszystkiego jest to, e pomimo pomylnego umieszczenia na stronie wali-
dacji po stronie klienta ASP.NET w dalszym cigu przeprowadza walidacj po stronie ser-
wera w momencie otrzymania danej strony. W ten sposób nie ma adnych kompromisów
zwizanych z bezpieczestwem. Decyzyjna natura walidacyjnych kontrolek serwerowych
oznacza, e mona tworzy strony ASP.NET tak dobre, jak tylko one mog by . Nie trzeba
szuka adnego wspólnego mianownika bezpieczestwa i szybkoci.

Obecnie w ASP.NET 3.5 dostpnych jest 6 kontrolek walidacyjnych. Od czasu wprowadzenia
pierwszej wersji technologii ASP.NET nie pojawiy si adne nowe kontrolki. W ASP.NET 2.0
wprowadzono jednak kilka nowych moliwoci, takich jak grupy walidacji oraz nowe moli-
woci zastosowania JavaScript. Obie te techniki omówione s w tym rozdziale. Do dyspo-
zycji mamy nastpujce walidacyjne kontrolki serwerowe:

Q

RequiredFieldValidator

,

Q

CompareValidator

,

Q

RangeValidator

,

Q

RegularExpressionValidator

,

Q

CustomValidator

,

Q

ValidationSummary

.

Praca z walidacyjnymi kontrolkami serwerowymi ASP.NET nie róni si niczym od pracy
z innymi kontrolkami serwerowymi ASP.NET. Kada z tych kontrolek moe by przeci-
gnita i upuszczona na powierzchni projektow, ale moe by take wprowadzona bezpo-
rednio do kodu strony ASP.NET. Kontrolki mog by modyfikowane w taki sposób, aby
odpowiaday one potrzebom aplikacji. W ten sposób aplikacja moe uzyska unikalny wygld.
Wiele przykadów pracy z tymi kontrolkami pojawi si w dalszej czci rozdziau.

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

243

Jeeli walidacyjne kontrolki serwerowe nie speniaj wszystkich oczekiwa, wtedy zaj-
dzie potrzeba napisania wasnych kontrolek walidacyjnych. Istniej jednak kontrolki
napisane przez osoby trzecie, na przykad takie jak Validation and More Petera Bluma
(VAM) z www.peterblum.com/VAM. Na wspomnianej stronie znajduje si ponad 40
kontrolek walidacyjnych ASP.NET.

W poniszej tabeli opisano funkcjonalno kadej z dostpnych walidacyjnych kontrolek
serwerowych.

Walidacyjna kontrolka serwerowa

Opis

RequiredFieldValidator

Dba o to, aby uytkownik nie opuci danego pola formularza.

CompareValidator

Pozwala porówna dane wprowadzone przez uytkownika
z innym elementem za pomoc operatora porównania
(równe, wiksze ni, mniejsze ni i tak dalej).

RangeValidator

Sprawdza, czy warto wprowadzona przez uytkownika
mieci si w podanym zakresie liczb lub znaków.

RegularExpressionValidator

Sprawdza, czy wpis uytkownika jest zgodny ze wzorcem
zdefiniowanym przez wyraenie regularne. To dobra kontrolka
do sprawdzenia adresu e-mail oraz numeru telefonu.

CustomValidator

Sprawdza wpis uytkownika za pomoc wasnej logiki
walidacyjnej.

ValidationSummary

Wywietla wszystkie komunikaty o bdach wszystkich
kontrolek walidacyjnych w jednym miejscu na stronie.

Przyczyny walidacji

Walidacja nie jest przeprowadzana nagle. Pojawia si w wyniku odpowiedzi na zdarzenie.
W wikszoci przypadków jest to zdarzenie nacinicia przycisku. Kontrolki serwerowe

Button

,

LinkButton

oraz

ImageButton

posiadaj moliwo uruchomienia procesu walidacji

na formularzu. Jest to zachowanie domylne. Po przecigniciu i upuszczeniu kontrolki

Button

na formularz otrzymujemy nastpujcy rezultat:

<asp:Button ID="Button1" runat="server" Text="Button" />

Przegldajc waciwoci kontrolki

Button

, mona zauway , e waciwo

CausesValidation

ustawiona jest na

True

. Jak ju wspomniano, jest to ustawienie domylne — wszystkie przyci-

ski na stronie, bez wzgldu na to, gdzie s, powoduj uruchomienie procesu walidacji.

Jeeli na stronie ASP.NET znajduje si wiele przycisków i nie ma potrzeby, aby kady
z nich wywoywa proces walidacji, wtedy mona ustawi waciwo

CausesValidation

na

False

dla tych przycisków, które powinny zignorowa proces walidacji (na przykad

przycisk Anuluj):

<asp:Button ID="Button1" runat="server" Text="Anuluj" CausesValidation="false" />

background image

244

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Kontrolka serwerowa RequiredFieldValidator

Kontrolka

RequiredFieldValidator

zwyczajnie sprawdza, czy do elementu HTML formularza

zostao co wprowadzone. To prosta kontrolka walidacyjna, ale jest ona uywana najczciej.
Kontrolka

RequiredFieldValidator

musi by wstawiona dla wszystkich elementów, które

musz spenia regu postaci warto wymagana.

Na listingu 4.1 pokazano przykadowy sposób uycia kontrolki serwerowej

Required

´FieldValidator

.

Listing 4.1. Przykadowy sposób uycia kontrolki serwerowej RequiredFieldValidator

VB

<%@ Page Language="VB" %>

<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If Page.IsValid Then
Label1.Text = "Strona jest prawidowa!"
End If
End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server" id="Head1">
<title>RequiredFieldValidator</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
Runat="server" Text="Wymagane!" ControlToValidate="TextBox1">
</asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button1" Runat="server" Text="Zatwierd"
OnClick="Button1_Click" />
<br />
<br />
<asp:Label ID="Label1" Runat="server"></asp:Label>
</div>
</form>
</body>
</html>

C#

<%@ Page Language="C#" %>

<script runat="server">
protected void Button1_Click(Object sender, EventArgs e) {
if (Page.IsValid) {
Label1.Text = " Strona jest prawidowa!";
}
}
</script>

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

245

Zbudujmy stron i spróbujmy j uruchomi . Na stronie pokae si proste pole tekstowe oraz
przycisk. Spróbujmy teraz pozostawi pole tekstowe puste i nacisn przycisk Zatwierd .
Wyniki pokazane s na rysunku 4.1.

Rysunek 4.1

Popatrzmy teraz na kod z przykadu. Na pocztku mona zauway , e przy kontrolkach

TextBox

,

Button

i

Label

nic si nie zmienio. Wstawione s one tak, jakby nie bya stosowana adna

technika walidacji. Na stronie umieszczono jednak prost kontrolk

RequiredFieldValidator

.

Na kilka waciwoci tej kontrolki naley zwróci szczególn uwag, poniewa bd sto-
sowane w kadej tworzonej walidacyjnej kontrolce serwerowej.

Pierwsz z tych wanych waciwoci jest

Text

. Warto tej waciwoci pokazywana jest

uytkownikowi kocowemu na stronie wtedy, gdy walidacja nie powiedzie si. W pokaza-
nym przykadzie jest to zwyky acuch znaków

Wymagane!

. Drug waciwoci, o której

warto wspomnie , jest

ControlToValidate

. Waciwo wykorzystywana jest do poczenia

walidacyjnej kontrolki serwerowej z tym elementem formularza ASP.NET, który ma by
sprawdzony. W tym przypadku waciwo wskazuje na jedyny element formularza — pole
edycji.

W przykadzie mona zauway , e komunikat o bdzie tworzony jest na podstawie atry-
butu kontrolki

<asp:RequiredFieldValidator>

. Zadanie realizowane jest za pomoc atrybutu

Text

. Pokazano to na listingu 4.2.

Listing 4.2. Wykorzystanie atrybutu Text

<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
Runat="server" Text="Wymagane!" ControlToValidate="TextBox1">
</asp:RequiredFieldValidator>

Ten sam komunikat o bdzie mona umieci pomidzy otwierajcym i zamykajcym wzem

<asp:RequiredFieldValidator>

. Pokazano to na listingu 4.3.

Listing 4.3. Umieszczenie wartoci pomidzy wzami

<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
Runat="server" ControlToValidate="TextBox1">
Wymagane!
</asp:RequiredFieldValidator>

background image

246

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Sprawdzanie wygenerowanych wyników

Kontrolka

RequiredFieldValidator

uywa walidacji po stronie klienta, jeeli tylko przegl-

darka na to pozwala. Mona samemu przekona si o obecnoci walidacji po stronie klienta
(jeeli przegldarka pozwala), klikajc na stronie prawym przyciskiem myszy i wybierajc
z menu podrcznego podgld róda. W kodzie strony mona dostrzec funkcje JavaScript
pokazane na listingu 4.4.

Listing 4.4. Wygenerowany kod JavaScript

… znaczniki strony usunite dla przejrzystoci

<script type="text/javascript">
<!--
function WebForm_OnSubmit() {
if (ValidatorOnSubmit() == false) return false;
return true;
}
//
-->

… znaczniki strony usunite dla przejrzystoci

<script type="text/javascript">
<!--
var Page_Validators = new Array(document.getElementById("RequiredFieldValidator1"));
//
-->
</script>

<script type="text/javascript">
<!--
var RequiredFieldValidator1 = document.all ? document.all["RequiredFieldValidator1"] :
document.getElementById("RequiredFieldValidator1");
RequiredFieldValidator1.controltovalidate = "TextBox1";
RequiredFieldValidator1.text = "Wymagane!";
RequiredFieldValidator1.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
RequiredFieldValidator1.initialvalue = "";
//
-->
</script>

… znaczniki strony usunite dla przejrzystoci

<script type="text/javascript">
<!--
var Page_ValidationActive = false;
if (typeof(ValidatorOnLoad) == "function") {
ValidatorOnLoad();
}

function ValidatorOnSubmit() {
if (Page_ValidationActive) {
return ValidatorCommonOnSubmit();
}
else {
return true;
}
}
//
-->
</script>

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

247

W kodzie strony mona zauway kilka zmian w elementach formularza (zwykych kon-
trolkach formularza). Obsuguj one teraz zatwierdzanie formularza oraz skojarzon z tym
zdarzeniem walidacj.

Korzystanie z waciwoci InitialValue

Kolejn wan waciwoci podczas pracy z kontrolk

RequiredFieldValidator

jest wa-

ciwo

InitialValue

. Czasami istniej elementy, które zawieraj pewn domyln warto

pocztkow (na przykad pobran z jakiego róda danych). Takie elementy formularza
mog przedstawia pewn warto , która musi by zmieniona, zanim formularz zostanie
przesany na serwer.

Korzystajc z waciwoci

InitialValue

, okrela si w kontrolce

RequiredFieldValidator

pocztkow warto elementu. Uytkownik kocowy musi zmieni warto tekstow tej kon-
trolki przed zatwierdzeniem formularza. Na listingu 4.5 pokazano przykad uycia tej wa-
ciwoci.

Listing 4.5. Praca z waciwoci InitialValue

<asp:TextBox ID="TextBox1" Runat="server">Moja warto pocztkowa</asp:TextBox>
&nbsp;
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
Runat="server" Text="Warto pola tekstowego musi by zmieniona!"
ControlToValidate="TextBox1" InitialValue="Moja warto pocztkowa">
</asp:RequiredFieldValidator>

W tym przypadku waciwo

InitialValue

zawiera warto

Moja warto pocztkowa

.

Po zbudowaniu i uruchomieniu strony pole tekstowe równie zawiera t warto . Kontrolka

RequiredFieldValidator

wymaga zmiany w tym polu. Tylko wtedy strona zostanie zakwa-

lifikowana jako poprawna.

Uniemoliwienie pustych wpisów i równoczesne wymaganie zmian

W poprzednim przykadzie uycia waciwoci

InitialValue

pojawi si interesujcy problem.

Po pierwsze, jeeli aplikacja z takim kodem zostanie uruchomiona, wtedy uytkownik moe
przej przez proces walidacji, przesyajc stron bez adnej wartoci wpisanej w polu edycji.
Puste pole edycji nie spowoduje wygenerowania bdu walidacji, poniewa kontrolka

RequiredFieldValidator

jest teraz przebudowana tak, aby zmusi uytkownika wycznie

do zmiany domylnej wartoci pola edycji (co uytkownik zrobi, usuwajc star warto ).
Zmieniajc kontrolk

RequiredFieldValidator

w ten sposób, nie nakada si adnego ogra-

niczenia, które wymaga wpisania czego w polu edycji — zmieniona musi by tylko warto
pocztkowa. Proces walidacji moe by ominity poprzez usunicie wszystkiego, co wpisano
w polu tekstowym.

Istnieje jednak sposób obejcia tego problemu. Dochodzimy tu do techniki, o której ju
wczeniej wspomniano — na formularzu mona umieci wiele regu walidacyjnych. Nie-
które z nich mog by przypisane do tego samego elementu. Aby naoy wymóg zmiany

background image

248

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

wartoci pocztkowej pola edycji i równoczenie zabroni pustego wpisu (przez co element
staje si elementem wymaganym), naley na stronie umieci dodatkow kontrolk

RequiredFieldValidator

. Pokazano to na przykadzie z listingu 4.6.

Listing 4.6. Uycie dwóch kontrolek RequiredFieldValidator dla jednego elementu formularza

<asp:TextBox ID="TextBox1" Runat="server">Moja warto pocztkowa</asp:TextBox>&nbsp;

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" Runat="server"
Text="Zmie warto pola" ControlToValidate="TextBox1"
InitialValue="Moja warto pocztkowa"></asp:RequiredFieldValidator>

<asp:RequiredFieldValidator ID="RequiredFieldValidator2" Runat="server"
Text="Nie zostawiaj pustego pola" ControlToValidate="TextBox1"
</asp:RequiredFieldValidator>

W pokazanym przykadzie mona zauway , e pole edycji rzeczywicie posiada dwie
skojarzone ze sob kontrolki

RequiredFieldValidator

. Pierwsza,

RequiredFieldValidator1

,

wymaga zmiany domylnej wartoci pola edycji poprzez uycie waciwoci

InitialValue

.

Druga kontrolka

RequiredFieldValidator

,

RequiredFieldValidator2

, sprawia, e kontrolka

TextBox1

staje si elementem formularza, który potrzebuje pewnej wartoci. Podane zacho-

wanie mona uzyska , stosujc dwie reguy walidacji do pojedynczego elementu formularza.

Walidacja list rozwijanych za pomoc kontrolki RequiredFieldValidator

Do tej pory pokazalimy duo przykadów uycia kontrolki

RequiredFieldValidator

z seri

pól tekstowych. Kontrolka

RequiredFieldValidator

moe by jednak z powodzeniem sto-

sowana wraz z innymi elementami.

Mona na przykad zastosowa kontrolk

RequiredFieldValidator

z kontrolk serwerow

<asp:DropDownList>

. Przypu my, e mamy list rozwijan. Uytkownik musi wybra z tej

listy swój zawód. Pierwszy element listy rozwijanej zawiera instrukcje dla uytkownika
i informuje o tym, co lista zawiera. Ten element listy jest wymagany. Kod, który zrealizuje
zaprezentowany scenariusz, pokazano na listingu 4.7.

Listing 4.7. Walidacja listy rozwijanej

<asp:DropDownList id="DropDownList1" runat="server">
<asp:ListItem Selected="True">Wybierz zawód</asp:ListItem>
<asp:ListItem>Programista</asp:ListItem>
<asp:ListItem>Prawnik</asp:ListItem>
<asp:ListItem>Lekarz</asp:ListItem>
<asp:ListItem>Artysta</asp:ListItem>
</asp:DropDownList>
&nbsp;
<asp:RequiredFieldValidator id="RequiredFieldValidator1"
runat="server" Text="Wybierz element"
ControlToValidate="DropDownList1"
InitialValue="Wybierz zawód">
</asp:RequiredFieldValidator>

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

249

Tak samo jak podczas pracy z kontrolk edycji, tak i w tym przypadku kontrolka

Required

´FieldValidator

skojarzona jest z kontrolk

DropDownList

za pomoc waciwoci

ControlToValidate

. Lista rozwijana, do której podpita jest kontrolka walidacyjna, posiada

warto pocztkow —

Wybierz zawód

. Oczywicie taka warto nie jest waciwa w mo-

mencie przesyania formularza na serwer. Znów naley uy waciwoci

InitialValue

kontrolki

RequiredFieldValidator

. Wartoci tej kontrolki jest warto pocztkowa listy

rozwijanej. Zmusza to oczywicie uytkownika do wyboru jednego z zawodów z listy roz-
wijanej. W przeciwnym razie nie bdzie on w stanie przesa strony na serwer.

Kontrolka serwerowa CompareValidator

Kontrolka

CompareValidator

pozwala wykonywa porównania pomidzy dwoma elemen-

tami formularza, a take suy do porównania dwóch wartoci umieszczonych we wskaza-
nych elementach formularza. Mona na przykad okreli , e wartoci elementu formularza
musi by liczba cakowita wiksza ni inna zadana warto . Mona take wskaza , e warto-
ciami musz by acuchy znaków, daty lub inne typy, które s do dyspozycji.

Walidacja wzgldem innych kontrolek

Jednym z do czsto stosowanych sposobów wykorzystania kontrolki

CompareValidator

jest uycie jej do porównania dwóch elementów formularza. Przypu my, e dana jest apli-
kacja, która w celu uzyskania dostpu do stron przez uytkowników wymaga podania hasa.
Tworzymy zatem jedno pole edycji, które bdzie suyo do pobrania hasa, i drugie pole
tekstowe, które bdzie suyo do potwierdzenia tego hasa. W zwizku z tym, e pole tek-
stowe dziaa w trybie wprowadzania hasa, uytkownik kocowy nie widzi tego, co wpisuje
— zna tylko liczb wprowadzonych znaków. Aby zmniejszy prawdopodobiestwo po-
myki przy wpisywaniu hasa i zapobiec wprowadzeniu do systemu zego hasa, uytkow-
nik proszony jest o potwierdzenie tego hasa. Po wprowadzeniu hase do systemu naley
porówna te dwa pola edycji i sprawdzi , czy wartoci w nich wpisane s takie same. Jeeli s
takie same, wtedy jest due prawdopodobiestwo, e uytkownik wpisa haso poprawnie
i moe ono by wprowadzone do systemu. Jeeli dwa pola tekstowe nie s zgodne, wtedy for-
mularz naley traktowa jako nieprawidowy. W przykadzie z listingu 4.8 pokazano t sytuacj.

Listing 4.8. Wykorzystanie CompareValidator do porównania wartoci z wartociami innych kontrolek

VB

<%@ Page Language="VB" %>
<script runat="server">

Protected Sub Button1_Click(sender As Object, e As EventArgs)
If Page.IsValid Then
Label1.Text = "Hasa s zgodne"
End If
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>CompareFieldValidator</title>

background image

250

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

</head>
<body>
<form id="Form1" runat="server">
<p>
Haso<br>
<asp:TextBox ID="TextBox1" Runat="server"
TextMode="Password"></asp:TextBox>
&nbsp;
<asp:CompareValidator ID="CompareValidator1"
Runat="server" ErrorMessage="Hasa nie s zgodne!"
ControlToValidate="TextBox2"
ControlToCompare="TextBox1"></asp:CompareValidator>
</p>
<p>
Potwierd haso<br>
<asp:TextBox ID="TextBox2" Runat="server"
TextMode="Password"></asp:TextBox>
</p>
<p>
<asp:Button ID="Button1" OnClick="Button1_Click"
Runat="server" Text="Zaloguj"></asp:Button>
</p>
<p>
<asp:Label ID="Label1" Runat="server"></asp:Label>
</p>
</form>
</body>
</html>
C#

<%@ Page Language="C#" %>

<script runat="server">

protected void Button1_Click(Object sender, EventArgs e) {
if (Page.IsValid)
Label1.Text = "Hasa s zgodne";
}

</script>

Patrzc na kontrolk

CompareValidator

na formularzu, mona zauway , e jest ona

podobna do kontrolki

FieldValidator

. Kontrolka

CompareValidator

posiada waciwo

ControlToValidate

, która czy si z jednym z elementów formularza na stronie. W tym

przypadku potrzebna jest tylko jedna kontrolka

CompareValidator

, poniewa wymagane jest

tylko jedno porównanie. W pokazanym przykadzie sprawdzana jest zgodno wartoci pól
edycji

TextBox2

oraz

TextBox1

. W zwizku z tym uyto waciwoci

ControlToCompare

.

Okrela si w ten sposób warto porównywan z

TextBox2

. W tym przykadzie wartoci

jest

TextBox1

.

Jest to wyjtkowo proste. Jeeli dwa pola tekstowe w momencie zatwierdzania strony po-
siadaj róne wartoci, wtedy w przegldarce wywietlana jest warto waciwoci

Text

kontrolki

CompareValidator

. Przykad pokazany jest na rysunku 4.2.

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

251

Rysunek 4.2

Walidacja wzgldem staej

Kontrolki

CompareValidator

mona uy nie tylko do walidacji wartoci wzgldem wartoci

w innych kontrolkach, ale te do porównania wartoci wzgldem staych okrelonych typów
danych. Przypu my, e na formularzu rejestracyjnym umieszczono pole edycji, w którym
uytkownik wpisuje swój wiek. W wikszoci tego typu przypadków celem jest pobranie
liczby cakowitej, a nie czego w postaci

aa

lub

bb

. Na listingu 4.9 pokazano, w jaki sposób

mona wymusi podanie liczby cakowitej.

Listing 4.9. Wykorzystanie CompareValidator do walidacji wzgldem staej

Wiek:
<asp:TextBox ID="TextBox1" Runat="server" MaxLength="3">
</asp:TextBox>
&nbsp;
<asp:CompareValidator ID="CompareValidator1" Runat="server"
Text="Musisz wpisa liczb "
ControlToValidate="TextBox1" Type="Integer"
Operator="DataTypeCheck"></asp:CompareValidator>

W pokazanym przykadzie uytkownik kocowy musi wpisa w polu tekstowym liczb. Jeeli
spróbuje obej proces walidacji, wpisujc warto nieprawidow, która zawiera co innego
ni cyfry, wtedy strona bdzie traktowana jako nieprawidowa. Kontrolka

CompareValidator

wywietla warto waciwoci

Text

.

Aby okreli typ danych wykorzystywany w porównaniach, korzysta si z waciwoci

Type

.

Waciwo

Type

moe przyjmowa nastpujce wartoci:

Q

Currency

,

Q

Date

,

Q

Double

,

Q

Integer

,

Q

String

.

background image

252

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Wprowadzenie ograniczenia ze wzgldu na typ to nie wszystko, co mona zrobi przy wy-
korzystaniu tej kontrolki. Mona take zadba o to, aby warto bya porównywana z okre-
lon sta. Istnieje sposób na sprawdzenie, czy warto wpisana w elemencie formularza
jest wiksza ni, mniejsza ni, równa, wiksza ni lub równa i mniejsza ni lub równa pewnej
wartoci. Przykad pokazano na listingu 4.10.

Listing 4.10. Wykonywanie porówna za pomoc kontrolki CompareValidator

Wiek:
<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
&nbsp;
<asp:CompareValidator ID="CompareValidator1" Runat="server"
Operator="GreaterThan" ValueToCompare="18"
ControlToValidate="TextBox1"
Text="Aby si zapisa musisz mie wi cej ni 18 lat" Type="Integer">
</asp:CompareValidator>

W tym przypadku kontrolka

CompareValidator

oprócz poczenia si z kontrolk oraz nao-

enia wymogu wprowadzenia liczby cakowitej robi co jeszcze. Wykorzystywane s rów-
nie atrybuty

Operator

oraz

ValueToCompare

. Dziki nim mona si upewni , e liczba jest

wiksza ni 18. Jeeli zatem uytkownik wprowadzi liczb równ 18 lub mniejsz, wtedy
walidacja nie powiedzie si i strona bdzie traktowana jako nieprawidowa.

Waciwo

Operator

moe przyjmowa nastpujce wartoci:

Q

Equal

,

Q

NotEqual

,

Q

GreaterThan

,

Q

GreaterThanEqual

,

Q

LessThan

,

Q

LessThanEqual

,

Q

DataTypeCheck

.

Waciwo

ValueToCompare

to miejsce, gdzie umieszcza si warto wykorzystywan

w porównaniu. W pokazanym przykadzie jest to liczba

18

.

Kontrolka serwerowa RangeValidator

Kontrolka

RangeValidator

jest podobna do kontrolki

CompareValidator

. Pozwala ona

sprawdzi , czy warto wprowadzona przez uytkownika lub jego wybór znajduje si
w podanym zakresie. Za pomoc kontrolki

CompareValidator

sprawdza si, czy warto jest

wiksza albo mniejsza ni wskazana staa. Jako przykad zastosowania kontrolki niech
posuy nieco zmodyfikowany przykad formularza pobierajcego wiek. Nieco inny jest
rodzaj walidacji wprowadzonej wartoci. Pokazano go na listingu 4.11.

Listing 4.11. Wykorzystanie kontrolki RangeValidator do sprawdzenia wartoci cakowitej

Wiek:
<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
&nbsp;
<asp:RangeValidator ID="RangeValidator1" Runat="server"

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

253

ControlToValidate="TextBox1" Type="Integer"
Text="Wiek musi by pomi dzy 30 i 40"
MaximumValue="40" MinimumValue="30"></asp:RangeValidator>

W pokazanym przykadzie umieszczono pole edycji, za pomoc którego pobierany jest
wiek uytkownika. Kontrolka

RangeValidator

analizuje wprowadzon warto i sprawdza,

czy mieci si ona w zakresie od 30 do 40. Wykonywane jest to za pomoc waciwoci

MaximumValue

oraz

MinimumValue

. Kontrolka

RangeValidator

pozwala take zadba o to, aby

wprowadzona warto bya liczb cakowit. W tym celu wykorzystywana jest waciwo

Type

, która ustawiona jest na

Integer

. Kolekcja zrzutów ekranów na rysunku 4.3 pokazuje

dziaanie omawianej kontrolki.

Rysunek 4.3

background image

254

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Jak mona zauway na zrzutach ekranów z rysunku 4.3, warto mniejsza ni 30 zostaje
przez kontrolk

RangeValidator

zasygnalizowana. To samo dzieje si w przypadku warto-

ci wikszych ni 40. Warto pomidzy 30 i 40 (w tym przypadku 36) spenia warunki
naoone przez kontrolk walidacyjn.

Kontrolka

RangeValidator

nie jest stosowana wycznie do porównywania liczb (w takich

sytuacjach jest jednak najczciej wykorzystywana). Moe ona posuy take do walidacji
zakresu acuchów znaków oraz innych elementów, wczajc w to daty pobrane z kalendarza.
Domylnie atrybut

Type

kadej z kontrolek walidacyjnych ustawiony jest na

String

. Kontrolka

RangeValidator

moe posuy do sprawdzenia, czy warto w innej kontrolce serwerowej

(takiej jak na przykad

Calendar

) mieci si w podanym zakresie dat.

Przypu my, e tworzony jest formularz internetowy, który pozwala na pobranie od uyt-
kownika daty przyjazdu. Data przyjazdu musi mieci si w zakresie dwóch tygodni od daty
biecej. Kontrolka

RangeValidator

moe by z atwoci dostosowana do takich potrzeb.

W zwizku z tym, e zakres dat musi by generowany dynamicznie, atrybuty

MaximumValue

oraz

MinimumValue

musz by przypisane programowo w zdarzeniu

Page_Load

. W oknie

projektanta przykadowa strona powinna wyglda podobnie do tej z rysunku 4.4.

Rysunek 4.4

Caa idea polega na tym, e uytkownik bdzie wybiera dat w kontrolce

Calendar

, a jego

wybór bdzie wywietlany w kontrolce

TextBox

. Potem, gdy uytkownik kliknie na formu-

larzu przycisk, wtedy w przypadku wybrania nieprawidowej daty zostanie o tym powia-
domiony. Jeeli wybrana data jest prawidowa, wtedy pokazywana jest ona przez kontrolk

Label

. Kod przykadu pokazany jest na listingu 4.12.

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

255

Listing 4.12. Wykorzystanie kontrolki RangeValidator do sprawdzenia wartoci daty w postaci acucha znaków

VB

<%@ Page Language="VB" %>

<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
RangeValidator1.MinimumValue = DateTime.Now.ToShortDateString()
RangeValidator1.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString()
End Sub

Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, _
ByVal e As System.EventArgs)
TextBox1.Text = Calendar1.SelectedDate.ToShortDateString()
End Sub

Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
If Page.IsValid Then
Label1.Text = "Data przybycia ustawiona jest na: " & TextBox1.Text
End If
End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Sprawdzenie poprawnoci daty</title>
</head>
<body>
<form id="form1" runat="server">
Data przyjazdu:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>&nbsp;
<asp:RangeValidator ID="RangeValidator1" runat="server"
Text="Mona wybra dat tylko na dwa tygodnie do przodu"
ControlToValidate="TextBox1" Type="Date"></asp:RangeValidator><br />
<br />
Wybierz dat przyjazdu:<br />
<asp:Calendar ID="Calendar1" runat="server"
OnSelectionChanged="Calendar1_SelectionChanged"></asp:Calendar>
&nbsp;
<br />
<asp:Button ID="Button1" runat="server" Text="Przycisk"
OnClick="Button1_Click" />
<br />
<br />
<asp:Label ID="Label1" runat="server"></asp:Label>
</form>
</body>
</html>

C#

<%@ Page Language="C#" %>

<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
RangeValidator1.MinimumValue = DateTime.Now.ToShortDateString();

background image

256

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

RangeValidator1.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString();
}

protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
TextBox1.Text = Calendar1.SelectedDate.ToShortDateString();
}

protected void Button1_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
Label1.Text = "Data przybycia ustawiona jest na: " +
TextBox1.Text.ToString();
}
}
</script>

W pokazanym kodzie wida , e podczas wczytywania strony atrybuty

MinimumValue

oraz

MaximumValue

ustawiane s dynamicznie. W tym przypadku wartoci

MinimumValue

staje

si wynik wywoania

DateTime.Now.ToShortDateString()

, a wartoci

MaximumValue

data

póniejsza o 14 dni.

Po wybraniu daty przez uytkownika jej warto wywietlana jest w kontrolce

TextBox1

.

Wykonywane jest to w procedurze obsugi zdarzenia

Calendar1_SelectionChanged

. Po wy-

braniu daty i klikniciu przycisku na stronie wykonywana jest procedura obsugi zdarzenia

Button1_Click

, a poprawno walidacji caej strony sprawdzana jest za pomoc waciwoci

Page.IsValid

. Nieprawidowa strona pokae wyniki zaprezentowane na rysunku 4.5.

Rysunek 4.5

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

257

Kontrolka serwerowa RegularExpressionValidator

Jedn ze wspaniaych kontrolek, któr programici najczciej wykorzystuj, jest

Regular

´ExpressionValidator

. Kontrolka oferuje wysoki poziom elastycznoci podczas wprowa-

dzania do formularza rónych regu. Wykorzystujc kontrolk

RegularExpressionValidator

,

mona sprawdzi zgodno wprowadzonych danych z pewnym wzorcem, wyraonym za
pomoc wyraenia regularnego.

Oznacza to, e mona zdefiniowa pewn struktur, która bdzie potem wykorzystywana
do sprawdzania zgodnoci z danymi wprowadzonymi przez uytkownika. Mona na przykad
zdefiniowa struktur, która wymusza wprowadzenie danych w postaci adresu e-mail lub
adresu internetowego URL. Jeeli warto nie jest zgodna z definicj, wtedy strona trakto-
wana jest jako nieprawidowa. Na listingu 4.13 pokazano, w jaki sposób sprawdzi po-
prawno danych wprowadzonych do pola edycji pod ktem ich zgodnoci z formatem
adresu e-mail.

Listing 4.13. Sprawdzenie, czy pole edycji zawiera waciwy adres e-mail

E-mail:
<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
&nbsp;
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
Runat="server" ControlToValidate="TextBox1"
Text="Musisz wpisa waciwy adres e-mail"
ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
</asp:RegularExpressionValidator>

Tak jak to jest w przypadku innych walidacyjnych kontrolek serwerowych, kontrolka

RegularExpressionValidator

uywa waciwoci

ContolToValidate

do poczenia si z inn

kontrolk. Zawiera take waciwo

Text

, która zawiera tekst wywietlany na ekranie po

niepomylnym zakoczeniu si procesu walidacji. Unikatow waciwoci tej kontrolki jest

ValidationExpression

. Waciwo przechowuje warto tekstow, która jest wyraeniem re-

gularnym stosowanym przez kontrolk do sprawdzania poprawnoci danych wejciowych.

Dziki Visual Studio 2008 praca z wyraeniami regularnymi jest nieco atwiejsza. Wszystko
to dziki moduowi Regular Expression Editor. W edytorze umieszczono kilka najczciej uy-
wanych wyrae regularnych, które mona zastosowa w kontrolce

RegularExpressionValidator

.

Aby przej do okna edytora, naley przeczy si na widok Design. Naley si jednocze-
nie upewni , e kontrolka serwerowa

RegularExpressionValidator1

w widoku Design jest

podwietlona i pokazane s jej waciwoci. Teraz, aby uruchomi Regular Expression Editor,
naley w oknie Properties Visual Studio klikn obok waciwoci

ValidationExpression

.

Edytor pokazany jest na rysunku 4.6.

Korzystajc z tego edytora, mona odnale wyraenia regularne dla takich wartoci, jak na
przykad adresy e-mail, URL, kody pocztowe, numery telefonów, numery ubezpieczeniowe.
Narzdzie Regular Expression Editor pomaga w korzystaniu z tych do czsto skompliko-
wanych wyrae regularnych. Pokan kolekcj takich wyrae mona znale w internecie.
Na przykad na witrynie RegExLib pod adresem www.regexlib.com.

background image

258

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Rysunek 4.6

Kontrolka serwerowa CustomValidator

Do tej pory pokazalimy zestaw kontrolek walidacyjnych, które mona natychmiast wyko-
rzysta . W wikszoci przypadków pokazane kontrolki walidacyjne doskonale sprawdzaj si
podczas wprowadzania regu walidacyjnych na formularzach. Czasami jednak adna z tych
kontrolek nie bdzie odpowiednia i trzeba bdzie polega wycznie na tym, co si zrobi
samemu. To wanie do takich zastosowa stworzono kontrolk

CustomValidator

.

Kontrolka

CustomValidator

pozwala utworzy wasne algorytmy walidacji, które bd sto-

sowane zarówno po stronie klienta, jak i po stronie serwera. Skorzystanie z takiej moliwo-
ci pozwala sprawdzi poprawno wartoci lub oblicze wykonanych w warstwie danych
(na przykad w bazie danych) lub upewni si, czy na wejciu pojawia si liczba speniajca
pewne matematyczne zaoenia (na przykad czy jest parzysta, czy nieparzysta). Wszystko
to mona zrobi dziki kontrolce

CustomValidator

.

Korzystanie z walidacji po stronie klienta

Jedn z zalet kontrolki

CustomValidator

wartych uwagi jest moliwo atwego wprowa-

dzenia mechanizmu walidacji po stronie klienta. Wikszo programistów ma swoje wasne
kolekcje funkcji JavaScript, które znajduj zastosowanie w ich aplikacjach. Dziki kontrolce

CustomValidator

te funkcje mog by szybko i atwo zaimplementowane na stronie.

Przyjrzyjmy si prostemu formularzowi, który pobiera od uytkownika liczb. Wykorzystano
w nim kontrolk

CustomValidator

do wprowadzenia walidacji po stronie klienta. Jej zadaniem

jest sprawdzenie, czy liczba jest podzielna przez 5. Pokazano to na listingu 4.14.

Listing 4.14. Uycie kontrolki CustomValidator do przeprowadzenia walidacji po stronie klienta

VB

<%@ Page Language="VB" %>

<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Label1.Text = "PRAWID OWA LICZBA!"
End Sub
</script>

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

259

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>CustomValidator</title>

<script type="text/javascript">
function validateNumber(oSrc, args) {
args.IsValid = (args.Value % 5 == 0);
}
</script>

</head>
<body>
<form id="form1" runat="server">
<div>
<p>
Liczba:
<asp:TextBox ID="TextBox1"
Runat="server"></asp:TextBox>
&nbsp;
<asp:CustomValidator ID="CustomValidator1"
Runat="server" ControlToValidate="TextBox1"
Text="Liczba musi by podzielna przez 5"
ClientValidationFunction="validateNumber">
</asp:CustomValidator>
</p>
<p>
<asp:Button ID="Button1" OnClick="Button1_Click"
Runat="server" Text="Button"></asp:Button>
</p>
<p>
<asp:Label ID="Label1" Runat="server"></asp:Label>
</p>
</div>
</form>
</body>
</html>

C#

<%@ Page Language="C#" %>

<script runat="server">

protected void Button1_Click(Object sender, EventArgs e) {
Label1.Text = "PRAWID OWA LICZBA!";
}

</script>

W pokazanym formularzu mona zauway kilka rzeczy. Po pierwsze, jest to prosty formularz;
zawiera tylko jedno pole tekstowe, w którym uytkownik moe wprowadzi dane. Uyt-
kownik naciska przycisk i wywoywana jest procedura obsugi zdarzenia

Button1_Click

,

która uzupenia na stronie zawarto kontrolki

Label1

. Caa ta operacja wykonywana jest

tylko wtedy, gdy na stronie wykonany zostanie proces walidacji, a dane wejciowe przejd
wszystkie testy.

background image

260

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Jedyn rzecz, która wyrónia t stron sporód innych tego typu, jest obecno drugiego
bloku

<script>

w sekcji

<head>

. To wasny kod JavaScript. Naley zauway , e Visual

Studio 2008 umoliwia stosowanie tego typu konstrukcji. Dziaa to nawet wtedy, gdy za-
chodzi potrzeba przeczania si pomidzy widokami Design oraz Source — to co, z czym
kiepsko radziy sobie poprzednie wersje Visual Studio. Funkcja

validateNumber

napisana

w JavaScript pokazana jest poniej:

<script type="text/javascript">
function validateNumber(oSrc, args) {
args.IsValid = (args.Value % 5 == 0);
}
</script>

Druga sekcja

<script>

jest kodem JavaScript uywanym w kontrolce

CustomValidator

i jest wywoywana podczas przeprowadzania procesu sprawdzania poprawnoci danych
wpisanych w polu edycji. Wstawiane funkcje JavaScript uywaj waciwoci

args.IsValid

i ustawiaj j na

True

lub

False

, w zalenoci od wyniku przeprowadzonych testów spraw-

dzajcych. W tym przypadku warto wprowadzona przez uytkownika (

args.Value

) jest

sprawdzana pod ktem podzielnoci przez

5

. Zwrócona warto logiczna przypisywana jest

do waciwoci

args.IsValid

, która na ostatnim etapie tego procesu uywana jest przez

kontrolk

CustomValidator

.

Kontrolka

CustomValidator

, tak jak inne kontrolki przedstawione wczeniej, korzysta

z waciwoci

ControlToValidate

. Za pomoc tej waciwoci kontrolka moe by powizana

z okrelonym elementem strony. Waciwoci, któr naley si w tym przypadku zaintere-
sowa , jest

ClientValidationFunction

. Warto w postaci acucha znaków przypisywana do

tej funkcji okrela funkcj po stronie klienta, która ma by wywoana w momencie sprawdzania
formularza przez kontrolk

CustomValidator

. W tym przypadku jest to

validateNumber

:

ClientValidationFunction="validateNumber"

Po uruchomieniu strony i wprowadzeniu nieprawidowego wpisu mona otrzyma wynik
pokazany na rysunku 4.7.

Rysunek 4.7

Tworzc wasne procedury walidacji po stronie serwera, mona stworzy tak zaawansowane
algorytmy, jakie s tylko aplikacji potrzebne. Uycie walidacji po stronie serwera moe si
przyda wtedy, gdy zachodzi potrzeba sprawdzenia danych wprowadzonych przez uytkownika

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

261

i porównania ich z dynamicznymi wartociami pochodzcymi z plików XML, baz danych
lub innego róda.

Jako przykad wasnej walidacji po stronie serwera za pomoc kontrolki

CustomValidator

moe posuy jej odpowiednik po stronie klienta. Zróbmy to samo. Stwórzmy procedur
walidujc po stronie serwera, która sprawdza podzielno liczby przez 5. Pokazano to na
listingu 4.15.

Listing 4.15. Wykorzystanie kontrolki CustomValidator do przeprowadzenia walidacji po stronie serwera

VB

<%@ Page Language="VB" %>

<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If Page.IsValid Then
Label1.Text = "PRAWID OWY WPIS!"
End If
End Sub

Sub ValidateNumber(sender As Object, args As ServerValidateEventArgs)
Try
Dim num As Integer = Integer.Parse(args.Value)
args.IsValid = ((num mod 5) = 0)
Catch ex As Exception
args.IsValid = False
End Try
End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>CustomValidator</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>
Liczba:
<asp:TextBox ID="TextBox1"
Runat="server"></asp:TextBox>
&nbsp;
<asp:CustomValidator ID="CustomValidator1"
Runat="server" ControlToValidate="TextBox1"
Text="Liczba musi by podzielna przez 5"
OnServerValidate="ValidateNumber"></asp:CustomValidator>
</p>
<p>
<asp:Button ID="Button1" OnClick="Button1_Click"
Runat="server" Text="Przycisk"></asp:Button>
</p>
<p>
<asp:Label ID="Label1" Runat="server"></asp:Label>
</p>
</div>
</form>

background image

262

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

</body>
</html>

C#

<%@ Page Language="C#" %>

<script runat="server">

protected void Button1_Click(Object sender, EventArgs e) {
if (Page.IsValid) {
Label1.Text = "PRAWID OWY WPIS!";
}
}

void ValidateNumber(object source, ServerValidateEventArgs args)
{
try
{
int num = int.Parse(args.Value);
args.IsValid = ((num%5) == 0);
}
catch(Exception ex)
{
args.IsValid = false;
}
}

</script>

Zamiast umieszcza w kodzie funkcj JavaScript, w tym przykadzie wykorzystano funkcj
po stronie serwera —

ValidateNumber

. Funkcja

ValidateNumber

, tak jak wszystkie funkcje

przystosowane do pracy z kontrolk

CustomValidator

, musi jako parametr przyjmowa

obiekt

ServerValidateEventArgs

. Dziki temu do funkcji sprawdzajcej zostan przekazane

waciwe dane. Funkcja

ValidateNumber

nie robi niczego ciekawego. Po prostu sprawdza,

czy liczba jest podzielna przez

5

.

Wewntrz wasnej funkcji, która zostaa zaprojektowana do pracy z kontrolk

CustomValidator

,

otrzymujemy warto pochodzc z elementu formularza poprzez obiekt

args.Value

. Usta-

wiamy potem waciwo

args.IsValid

na

True

lub

False

, w zalenoci od wyników pro-

cedury sprawdzajcej. W przykadzie mona zauway , e

args.IsValid

ustawiane jest na

False

wtedy, gdy liczba nie jest podzielna przez 5, i wtedy, gdy wyrzucony zostanie wyjtek

(moe on zosta wygenerowany wtedy, gdy zamiast liczby z elementu formularza otrzymamy
jaki tekst). Po utworzeniu wasnej funkcji walidujcej naley przej do kolejnego kroku.
Wstawmy zatem kontrolk

CustomValidator

na stron, jak pokazano na poniszym listingu:

<asp:CustomValidator ID="CustomValidator1"
Runat="server" ControlToValidate="TextBox1"
Text="Liczba musi by podzielna przez 5"
OnServerValidate="ValidateNumber"></asp:CustomValidator>

Aby skojarzy kontrolk

CustomValidator

z funkcj umieszczon w kodzie po stronie serwera,

korzysta si z atrybutu

OnServerValidate

. Wartoci przypisywan do tej waciwoci jest

nazwa funkcji — w tym przypadku jest to

ValidateNumber

.

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

263

Wykonanie kodu z tego przykadu spowoduje wysanie strony z powrotem na serwer i tam
zostanie wykonana walidacja (dziki funkcji

ValidateNumber

). Potem strona jest przeado-

wywana i wywoywane jest zdarzenie

Page_Load

. Na listingu 4.15 mona zauway , e

sprawdzana jest warto okrelajca, czy strona jest prawidowa. Wykonywane jest to za
pomoc waciwoci

Page.IsValid

:

If Page.IsValid Then
Label1.Text = "PRAWID OWY WPIS!"
End If

Jednoczesne uycie walidacji po stronie serwera i po stronie klienta

Jak ju zostao wczeniej wspomniane, naley pomyle o bezpieczestwie formularzy
i zadba o to, aby zbierane przez formularz dane byy prawidowe. Z tego powodu, decy-
dujc si na walidacj po stronie klienta (pokazano to na listingu 4.14), naley jednoczenie
przerobi funkcje dziaajce po stronie klienta na ich odpowiedniki po stronie serwera. Po
wykonaniu tego kroku powinno si skojarzy funkcje po stronie klienta i po stronie serwera
z kontrolk

CustomValidator

. W przypadku stosowania algorytmu walidujcego z listingu 4.14

i listingu 4.15 mona uy na stronie dwóch funkcji walidacyjnych i tak zmodyfikowa kon-
trolk

CustomValidator

, aby wskazywaa na obie te funkcje. Pokazano to na listingu 4.16.

Listing 4.16. Kontrolka CustomValidator z walidacj po stronie klienta i po stronie serwera

<asp:CustomValidator ID="CustomValidator1"
Runat="server" ControlToValidate="TextBox1"
Text="Liczba musi by podzielna przez 5"
ClientValidationFunction="validateNumber"
OnServerValidate="ValidateNumber"></asp:CustomValidator>

Jak wida na zaprezentowanym przykadzie, nie ma adnego problemu zwizanego z jed-
noczesnym uyciem atrybutów

ClientValidationFunction

oraz

OnServerValidate

.

Kontrolka serwerowa ValidationSummary

Kontrolka

ValidationSummary

nie jest kontrolk, która przeprowadza jakiego rodzaju testy

sprawdzajce poprawno danych wpisanych na formularzu. Jest to kontrolka typowo ra-
portujca, która jest wykorzystywana przez inne kontrolki walidacyjne na stronie. Kontrol-
ka walidacyjna

ValidationSummary

moe by uyta do zebrania wszystkich zgoszonych

bdów walidacyjnych na stronie i moe stanowi alternatyw wywietlania bdów przez
kad kontrolk walidacyjn indywidualnie.

Taka moliwo moe by wykorzystana na wikszych formularzach, które wykorzystuj
peny proces walidacji. W takim przypadku rozwizaniem bardziej przyjaznym dla uyt-
kownika moe by umieszczenie wszystkich zgoszonych bdów w sposób jednolity i atwy
do ogarnicia. Takie komunikaty o bdach mog by wywietlone za pomoc listy, listy
wypunktowanej lub paragrafu.

Domylnie kontrolka

ValidationSummary

pokazuje list zgoszonych bdów walidacji w po-

staci listy wypunktowanej. Pokazano to na listingu 4.17.

background image

264

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Listing 4.17. Przykad fragmentu strony korzystajcej z kontrolki ValidationSummary

<p>Imi
<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
&nbsp;
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
Runat="server" ErrorMessage="Musisz wpisa swoje imi "
ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
</p>
<p>Nazwisko
<asp:TextBox ID="TextBox2" Runat="server"></asp:TextBox>
&nbsp;
<asp:RequiredFieldValidator ID="RequiredFieldValidator2"
Runat="server" ErrorMessage="Musisz wpisa swoje nazwisko"
ControlToValidate="TextBox2"></asp:RequiredFieldValidator>
</p>
<p>
<asp:Button ID="Button1" OnClick="Button1_Click" Runat="server"
Text="Zatwierd"></asp:Button>
</p>
<p>
<asp:ValidationSummary ID="ValidationSummary1" Runat="server"
HeaderText="Otrzymae nast pujce b dy:">
</asp:ValidationSummary>
</p>
<p>
<asp:Label ID="Label1" Runat="server"></asp:Label>
</p>

Zadaniem przykadowego kodu jest pobranie imienia i nazwiska uytkownika. Kade pole
tekstowe na formularzu ma powizan ze sob kontrolk

RequiredFieldValidator

. Po zbu-

dowaniu i uruchomieniu strony oraz naciniciu przez uytkownika przycisku Zatwierd
bez wpisywania w pola edycji adnych wartoci powstan dwa bdy. Wynik dziaania
aplikacji pokazany jest na rysunku 4.8.

Rysunek 4.8

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

265

We wczeniejszych przykadach walidacji kontrolek na formularzu bdy pojawiaj si
obok kadego z pól tekstowych. Mona jednak zauway , e kontrolka

ValidationSummary

pokazuje bdy walidacyjne w postaci czerwonej listy wypunktowanej w miejscu, w któ-
rym ta kontrolka si znajduje. W wikszoci przypadków nie ma potrzeby wywietlania
tych samych bdów na stronie dwukrotnie. Mona zmieni to zachowanie, korzystajc nie
tylko z waciwoci

ErrorMessage

, ale take z waciwoci

Text

kontrolek walidacyjnych,

tak jak byo to wykonywane w tym rozdziale do tej pory. Zaprezentowane podejcie poka-
zano na listingu 4.18.

Listing 4.18. Wykorzystanie waciwoci Text kontrolki walidacyjnej

<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
Runat="server" ErrorMessage="Musisz wpisa swoje imi " Text="*"
ControlToValidate="TextBox1"></asp:RequiredFieldValidator>

lub

<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
Runat="server" ErrorMessage="Musisz wpisa swoje imi "
ControlToValidate="TextBox1">*</asp:RequiredFieldValidator>

Na listingu 4.18 pokazano dwa sposoby wykonania tego samego zadania. Pierwszy z nich
polega na uyciu waciwoci

Text

. Drugi polega na umieszczeniu wartoci pomidzy

znacznikami elementu

<asp:RequiredFieldValidator>

. Wprowadzenie do kontrolek wali-

dacyjnych takich zmian spowoduje powstanie wyników pokazanych na rysunku 4.9.

Rysunek 4.9

Aby otrzyma taki wynik, naley pamita , e kontrolka

ValidationSummary

w celu wy-

wietlenia bdów walidacji korzysta z waciwoci

ErrorMessage

. Waciwo

Text

jest

uywana przez kontrolki walidacyjne i nie jest w aden sposób przetwarzana przez kontrolk

ValidationSummary

.

background image

266

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Oprócz list wypunktowanych mona stosowa inne formaty wywietlania wyników. Zmian
mona dokona za pomoc waciwoci

DisplayMode

. Kontrolka moe przyjmowa nast-

pujce wartoci:

Q

BulletList

,

Q

List

,

Q

SingleParagraph

.

Zamiast wywietla wyniki na stronie, mona take wykorzysta okno dialogowe. Na li-
stingu 4.19 pokazano przykad takiego podejcia.

Listing 4.19. Wykorzystanie okna dialogowego do raportowania bdów walidacji

<asp:ValidationSummary ID="ValidationSummary1" Runat="server"
ShowMessageBox="True" ShowSummary="False"></asp:ValidationSummary>

W pokazanym przykadzie waciwo

ShowSummary

ustawiona jest na

False

, co oznacza, e

bdy walidacyjne nie bd wywietlane na stronie. Jednak w zwizku z tym, e waci-
wo

ShowMessageBox

ustawiona jest na

True

, wszystkie bdy walidacji bd wywietlone

w oknie dialogowym. Pokazano to na rysunku 4.10.

Rysunek 4.10

Wyczanie walidacji po stronie klienta

Walidacyjne kontrolki serwerowe automatycznie przeprowadzaj walidacj po stronie klienta
(jeeli aplikacja wysyajca danie potrafi poprawnie przetworzy utworzony kod JavaScript).
Czasami jednak zachodzi konieczno przejcia kontroli nad tego typu zachowaniem.

Mona wyczy walidacj tych kontrolek po stronie klienta w taki sposób, aby nie wysy-
ay one do aplikacji dajcych adnych funkcji walidujcych. Takie podejcie umoliwia
przeprowadzanie wycznie walidacji po stronie serwera, bez wzgldu na rzeczywiste moliwo-
ci kontrolek walidacyjnych. Istnieje kilka moliwoci wyczenia tego typu funkcjonalnoci.

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

267

Pierwszy sposób moe by zrealizowany na poziomie kontrolki. Kada z walidacyjnych
kontrolek serwerowych posiada waciwo o nazwie

EnableClientScript

. Waciwo jest

domylnie ustawiona na

True

. Ustawienie waciwoci na

False

blokuje wysyanie funkcji

JavaScript na stron klienta. Zamiast tego walidacja przeprowadzana jest na serwerze.
Przykad uycia tej waciwoci pokazany jest na listingu 4.20.

Listing 4.20. Zablokowanie w kontrolce walidacyjnej walidacji po stronie klienta

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" Runat="server"
Text="*" ControlToValidate="TextBox1" EnableClientScript="false">

Mona take zablokowa walidacj po stronie klienta programowo. Pokazano to na listingu 4.21.

Listing 4.21. Programowe blokowanie walidacji po stronie klienta

VB

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
RequiredFieldValidator1.EnableClientScript = False
End Sub

C#

protected void Page_Load(object sender, EventArgs e)
RequiredFieldValidator1.EnableClientScript = false;
End Sub

Kolejn opcj jest wyczenie walidacji na kliencie dla wszystkich kontrolek na stronie
w zdarzeniu

Page_Load

. Moe to by przydatne wtedy, gdy trzeba dynamicznie zadecy-

dowa o zezwoleniu na walidacj po stronie klienta lub o jej zablokowaniu. Pokazano to na
listingu 4.22.

Listing 4.22. Blokowanie walidacji po stronie klienta dla wszystkich kontrolek w zdarzeniu Page_Load

VB

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
For Each bv As BaseValidator In Page.Validators
bv.EnableClientScript = False
Next
End Sub

C#

protected void Page_Load(object sender, EventArgs e) {
foreach(BaseValidator bv in Page.Validators)
{
bv.EnableClientScript = false;
}
}

Instrukcja

For Each

przegldajca kad instancj klasy

BaseValidator

w skadowej

Validators

strony ASP.NET moe wyczy walidacj po stronie klienta wszystkich kontrolek, które
zostay umieszczone na tej stronie.

background image

268

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Korzystanie z obrazków i d wików
w powiadomieniach o bdach

Do tej pory wywietlalimy proste wiadomoci tekstowe, które informoway o pojawieniu
si bdów w walidacyjnych kontrolkach serwerowych. W wikszoci przypadków takie
rozwizanie jest wystarczajce — prosty komunikat tekstowy informuje uytkownika ko-
cowego o tym, e wprowadzi do formularza jak nieprawidow warto , która nie spenia
naoonych wymaga.

Interesujc wskazówk jest to, e nie trzeba wcale uywa tekstu — w celu powiadomienia
uytkownika mona take uywa dwików i obrazków.

W tym celu korzysta si z waciwoci

Text

, która jest dostpna w kadej kontrolce walida-

cyjnej. Aby do zasygnalizowania bdu uy obrazka, mona po prostu przypisa do wa-
ciwoci waciwy kod HTML. Pokazano to na listingu 4.23.

Listing 4.23. Uywanie obrazków do powiadomienia o bdach

<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
Runat="server" Text='<img src="error.gif">'
ControlToValidate="TextBox1"></asp:RequiredFieldValidator>

Jak mona zauway na przykadzie, zamiast wywietla tekst na stronie, do waciwoci
przypisywany jest tekst HTML. Ten fragment tekstu HTML uywany jest do wywietlenia
obrazka. Naley zwróci szczególn uwag na obecno cudzysowów pojedynczych i po-
dwójnych. W ten sposób po wygenerowaniu strony w przegldarce nie pojawi si adne
bdy. Kod pokazany na listingu 4.23 spowoduje wygenerowanie strony podobnej do tej
z rysunku 4.11.

Rysunek 4.11

Kolejnym interesujcym rozwizaniem jest moliwo dodania do strony powiadomienia
dwikowego, które bdzie uywane przy bdach. Mona to zrobi w taki sam sposób, jaki
zosta wykorzystany przy powiadomieniu obrazkowym. Na listingu 4.24 pokazano przykad.

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

269

Listing 4.24. Wykorzystanie d wiku do powiadomienia o bdach

<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
Runat="server" Text='<bgsound src="C:\Windows\Media\tada.wav">'
ControlToValidate="TextBox1" EnableClientScript="False">
</asp:RequiredFieldValidator>

Duo rónych dwików systemu Windows mona znale w katalogu

C:\Windows\Media

.

W tym przykadzie waciwo

Text

przyjmuje warto elementu

<bgsound>

. Zadaniem

tego elementu jest umieszczenie na formularzu dwiku (dziaa tylko z Internet Explorer).
Dwik odgrywany jest tylko w momencie wywoania przez uytkownika kontrolki wa-
lidacyjnej.

Pracujc z powiadomieniami dwikowymi, trzeba zablokowa skrypty po stronie klienta.
Jeeli si tego nie zrobi, wtedy dwik zostanie odegrany ju w momencie wczytania strony
w przegldarce, bez wzgldu na to, czy pojawi si jaki bd.

Praca z grupami walidacyjnymi

W wikszoci przypadków programici umieszczali na jednej stronie wiksz ilo formu-
larzy. W ASP.NET 1.0/1.1 byo to moliwe, poniewa kliknicia rónych przycisków mogy
wywoywa róne zdarzenia. Korzystajc z takiego rozwizania, mona si byo narazi na
pewne problemy.

Jeden z tych problemów polega na tym, e pojawiay si pewne trudnoci z posiadaniem
walidacji dla wszystkich kontrolek na kadym formularzu strony. Róne kontrolki walida-
cyjne byy czsto przypisywane do dwóch rónych formularzy na stronie. Gdy uytkownik
zatwierdza jeden z formularzy, wtedy uruchamiane byy procedury walidacyjne na drugim
formularzu (poniewa uytkownik nie pracowa z tym formularzem). Bdy na drugiej
stronie mog wic zablokowa zatwierdzenie pierwszego formularza.

Na rysunku 4.12 pokazano przykadow stron grupy uytkowników ASP.NET, która zawiera
dwa formularze.

Jeden formularz jest przeznaczony dla czonków grupy. Za jego pomoc podaje si nazw
uytkownika i haso, które s potrzebne do wejcia do strefy tylko dla czonków. Drugi
formularz na stronie jest przeznaczony dla wszystkich uytkowników i pozwala zapisa si
do newslettera. Kady z formularzy posiada swój przycisk i zwizane z nim kontrolki wali-
dacyjne. Problem pojawia si wtedy, gdy kto przesya informacje za pomoc jednego for-
mularza. Przypu my, e mamy do czynienia z czonkiem grupy, który wpisuje nazw
uytkownika, haso i naciska przycisk Zaloguj. Kontrolki walidacyjne dla newslettera mog
zasygnalizowa bd, poniewa w tym formularzu nie uzupeniono adresu e-mail. Jeeli
kto jest zainteresowany korzystaniem z newslettera, wtedy umieszcza tylko adres e-mail
w ostatnim polu i naciska przycisk Zapisz si. Kontrolka walidacyjna z pierwszego formu-
larza sygnalizuje bd, poniewa nie wprowadzono nazwy uytkownika i hasa do pierw-
szego formularza.

background image

270

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Rysunek 4.12

W ASP.NET 3.5 pojawia si waciwo

ValidationGroup

, która pozwala podzieli kon-

trolki walidacyjne na kilka niezalenych grup. W momencie nacinicia przycisku na stro-
nie pozwala ona aktywowa tylko okrelone kontrolki walidacyjne. Na listingu 4.25 poka-
zano przykad podzielenia kontrolek walidacyjnych na stronie grupy uytkowników na dwie
róne grupy.

Listing 4.25. Korzystanie z waciwoci ValidationGroup

<%@ Page Language="VB" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Grupy walidacji</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Grupa uytkowników ASP.NET</h1>
<p>Nazwa uytkownika:
<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>&nbsp; Haso:
<asp:TextBox ID="TextBox2" Runat="server"
TextMode="Password"></asp:TextBox>&nbsp;
<asp:Button ID="Button1" Runat="server" Text="Zaloguj"
ValidationGroup="Login" />
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" Runat="server"
Text="* Musisz wpisa nazw uytkownika!"

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

271

ControlToValidate="TextBox1" ValidationGroup="Login">
</asp:RequiredFieldValidator>
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" Runat="server"
Text="* Musisz wpisa haso!"
ControlToValidate="TextBox2" ValidationGroup="Login">
</asp:RequiredFieldValidator>
<p>
Nasze gówne spotkania odbywaj si najcz ciej w ostatni poniedziaek
miesica. Czasami, ze wzgl du na wakacje lub inne wane okolicznoci
przekadamy spotkania na inne dni, ale rzadko si to zdarza. Aby uzyska
wi cej informacji na ten temat, sprawd nasz stron gówn. Grupy zajmujce
si innymi zagadnieniami spotykaj si w inne dni miesica. Sprawd stron
SIG w celu uzyskania dodatkowych informacji. Moesz take przejrze nasz
kalendarz. Tam dowiesz si o najwaniejszych wydarzeniach.<br />
</p>
<h2>Zapisz si na newsletter!</h2>
<p>E-mail:
<asp:TextBox ID="TextBox3" Runat="server"></asp:TextBox>&nbsp;
<asp:Button ID="Button2" Runat="server" Text="Zapisz si "
ValidationGroup="Newsletter" />&nbsp;
<br />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
Runat="server"
Text="* Musisz wpisa waciwy adres e-mail!"
ControlToValidate="TextBox3" ValidationGroup="Newsletter"
ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
</asp:RegularExpressionValidator>
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" Runat="server"
Text="* Zapomniae o adresie e-mail!"
ControlToValidate="TextBox3" ValidationGroup="Newsletter">
</asp:RequiredFieldValidator>
</p>
</div>
</form>
</body>
</html>

Waciwo

ValidationGroup

na przykadzie zostaa pogrubiona. Mona zauway , e

wartoci waciwoci jest acuch znaków. Warto take zwróci uwag na to, e nie tylko
kontrolki walidacyjne posiadaj t waciwo . Kluczowe kontrolki serwerowe take maj
waciwo

ValidationGroup

, poniewa zdarzenia takie jak kliknicia mysz take musz

by powizane z okrelon grup walidacyjn.

W pokazanym przykadzie kady z przycisków przypisany jest do innej grupy walidacyjnej.
Pierwszy przycisk jako wartoci uywa

Login

, drugi z nich uywa wartoci

Newsletter

.

Kada z kontrolek walidacyjnych take powizana jest z okrelon grup walidacyjn.
Dziki takiemu rozrónieniu, jeeli uytkownik kliknie na stronie przycisk Zaloguj,
ASP.NET jest w stanie rozpozna grup. Konsekwencj jest to, e przycisk pracuje wycznie
z walidacyjnymi kontrolkami serwerowymi nalecymi do tej samej grupy. ASP.NET ignoruje
walidacyjne kontrolki przypisane do innych grup walidacyjnych.

background image

272

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Korzystajc z tego udogodnienia, mona zastosowa wiele grup z reguami walidacyjnymi,
które bd wywoywane tylko wtedy, gdy chcemy. Pokazano to na rysunku 4.13.

Rysunek 4.13

Kolejnym udogodnieniem dodanym do kontrolek walidacyjnych jest waciwo

SetFocusOnError

.

Waciwo pobiera warto typu logicznego. Jeeli podczas zatwierdzania formularza sy-
gnalizowany jest bd, wtedy waciwo umieszcza fokus na elemencie, który ten bd za-
wiera. Waciwo

SetFocusOnError

pokazana jest na poniszym listingu:

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" Runat="server"
Text="* Musisz wpisa nazw uytkownika!"
ControlToValidate="TextBox1" ValidationGroup="Login" SetFocusOnError="true">
</asp:RequiredFieldValidator>

Jeeli

RequiredFieldValidator1

zasygnalizuje bd, poniewa uytkownik nie wstawi ad-

nej wartoci w polu

TextBox1

, wtedy strona jest odrysowywana z fokusem ustawionym na

kontrolce

TextBox1

. Pokazano to na rysunku 4.14.

Naley take zwróci uwag na to, e wiele kontrolek walidacyjnych moe zawiera usta-
wion na

True

waciwo

SetFocusOnError

. Jeeli w takim przypadku wystpi wicej bdów

walidacji, wtedy fokus otrzyma pierwszy element formularza. Jako przykad wemy poka-
zany formularz. Jeeli zarówno pole tekstowe z nazw uytkownika (

TextBox1

), jak i pole

tekstowe z hasem (

TextBox2

) zawieraj bdy walidacji, wtedy fokus zostanie ustawiony na

polu tekstowym z nazw uytkownika. Jest to bowiem pierwsza kontrolka tego formularza
z bdem.

background image

Rozdzia 4.

Q

Walidacyjne kontrolki serwerowe

273

Rysunek 4.14

Podsumowanie

Kontrolki walidacyjne s miym dodatkiem dla tych programistów, którzy przenosz si
z Active Server Pages na ASP.NET. Skrywaj one wielkie moliwoci pod postaci atwej
w uyciu paczki i tak jak wiele rzeczy w wiecie .NET mog by w prosty sposób dostoso-
wywane. Dziki temu bd dziaay dokadnie tak, jak sobie tego zayczymy.

Naley pamita , e celem formularzy jest zbieranie danych. Takie zbieranie danych nie
ma jednak wikszego sensu, gdy dane s nieprawidowe. Oznacza to, e trzeba zastosowa
pewne reguy sprawdzania poprawnoci danych, które bd implementowane na formula-
rzach za pomoc zestawu rónych kontrolek — walidacyjnych kontrolek serwerowych.

W niniejszym rozdziale omówiono róne walidacyjne kontrolki, wczajc w to:

Q

RequiredFieldValidator

,

Q

CompareValidator

,

Q

RangeValidator

,

Q

RegularExpressionValidator

,

background image

274

ASP.NET 3.5 z wykorzystaniem C

# i VB. Zaawansowane programowanie

Q

RegularExpressionValidator

,

Q

CustomValidator

,

Q

ValidationSummary

.

Oprócz zaprezentowania podstawowych kontrolek walidacyjnych w rozdziale poruszono
take zagadnienia zwizane ze stosowaniem walidacji po stronie klienta i walidacji po stro-
nie serwera.


Wyszukiwarka

Podobne podstrony:
ASP NET 4 z wykorzystaniem C i VB Zaawansowane programowanie asp4cv
ASPNET 35 dla programistow PHP
Wykorzystanie VB cz 2, Tutoriale, Programowanie
Perl Zaawansowane programowanie Wydanie II perlz2
Perl Zaawansowane programowanie
C Zaawansowane programowanie zaprcp
php5 zaawansowane programowanie

więcej podobnych podstron