Inhoudsopgave 1 Inleiding 1.1
1.2
1.3
1.4
8
Het .Net Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.1.1
Het .Net Ontwikkelingsmodel . . . . . . . . . . . . . . . . . . . . . . .
8
1.1.2
Compilatie en Uitvoering in .Net . . . . . . . . . . . . . . . . . . . . .
9
ASP .Net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
1.2.1
Webdevelopment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
1.2.2
ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
1.2.3
ASP .Net 1.0 en 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
1.2.4
ASP .NET 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
Ontwikkelingstools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.3.1
Visual Studio 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.3.2
Een nieuwe web applicatie aanmaken . . . . . . . . . . . . . . . . . . .
12
1.3.3
De verschillende windows van de IDE . . . . . . . . . . . . . . . . . .
15
1.3.4
Webpagina’s bekijken en debuggen . . . . . . . . . . . . . . . . . . . .
20
Het Boekenwinkeltje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
1.4.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
1.4.2
Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
1.4.3
Aanmaken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2 Web Forms
24
2.1
Page syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
2.2
Het ASP .Net Event Model . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.2.1
Een eenvoudig voorbeeld . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.2.2
Application Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
2.2.3
De Global.asax file . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
2.2.4
Page life cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
1
INHOUDSOPGAVE
2
2.3
De Page klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
2.4
Master Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
2.5
XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
2.6
Het Boekenwinkeltje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
2.6.1
Global.asax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
2.6.2
Masterpage.master . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
2.6.3
Content pages
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
2.7
3 Server Controls
59
3.1
Types Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
3.2
HTML Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
3.2.1
HTML elementen als server controls . . . . . . . . . . . . . . . . . . .
61
3.2.2
Een kort overzicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
3.2.3
Controls aanmaken . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
3.2.4
Via code stijlen aanpassen . . . . . . . . . . . . . . . . . . . . . . . . .
65
3.2.5
Op events reageren . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
Web Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
3.3.1
WebControl basisklasse . . . . . . . . . . . . . . . . . . . . . . . . . .
71
3.3.2
WebControls gebruiken . . . . . . . . . . . . . . . . . . . . . . . . . .
72
3.3.3
Tekst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
3.3.4
Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
3.3.5
Keuzes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
3.3.6
Lijsten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
3.3.7
Groeperen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
3.3.8
Geavanceerde controls . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
Validation Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
3.4.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
3.4.2
RequiredFieldValidator . . . . . . . . . . . . . . . . . . . . . . . . . .
86
3.4.3
RangeValidator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
3.4.4
CompareValidator . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
3.4.5
RegularExpressionValidator . . . . . . . . . . . . . . . . . . . . . . . .
87
3.4.6
CustomValidator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
3.4.7
ValidationSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
3.3
3.4
Erasmushogeschool Brussel
Gitte Vermeiren
INHOUDSOPGAVE
3.5
3.6
Het Boekenwinkeltje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
3.5.1
Registreer.aspx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
4 Web applicaties 4.1
4.2
4.3
4.4
4.5
102
Navigatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.1.1
Pagina’s met ’Multiple Views’ . . . . . . . . . . . . . . . . . . . . . . . 102
4.1.2
Site Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.1.3
Breadcrumbs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
State Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.2.1
View State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.2.2
Query String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.2.3
Cross Page Posting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4.2.4
Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.2.5
Session State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.2.6
Application State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Configuratie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 4.3.1
machine.config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.3.2
web.config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.3.3
customErrors element . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.3.4
connectionStrings element . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.3.5
appSettings element . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4.3.6
Vanuit code de configuratie aanpassen . . . . . . . . . . . . . . . . . . 122
4.3.7
WAT - Website Administration Tool . . . . . . . . . . . . . . . . . . . 123
Het Boekenwinkeltje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 4.4.1
Web.sitemap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.4.2
Masterpage.master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.4.3
Web.config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5 Data 5.1
3
130
Inleiding ADO .Net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 5.1.1
De architectuur van ADO .Net . . . . . . . . . . . . . . . . . . . . . . 130
5.1.2
Twee modellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.1.3
De Connection klasse
Erasmushogeschool Brussel
. . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Gitte Vermeiren
INHOUDSOPGAVE
5.2
5.3
5.4
5.5
5.6
4
5.1.4
Een commando uitvoeren . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.1.5
DbDataReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.1.6
SQL injection attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.1.7
DbParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
De DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 5.2.1
Architectuur van de DataSet . . . . . . . . . . . . . . . . . . . . . . . 149
5.2.2
De DataAdapter klasse . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.2.3
Data Aanpassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.2.4
Specifieke rijen zoeken . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
5.2.5
DataView klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
5.2.6
XSD files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 5.3.1
Basis data binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
5.3.2
single-value data binding . . . . . . . . . . . . . . . . . . . . . . . . . 170
5.3.3
Repeated-value data binding . . . . . . . . . . . . . . . . . . . . . . . 172
Data Source Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 5.4.1
SqlDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.4.2
Parameters in een SqlDataSource control . . . . . . . . . . . . . . . . 184
5.4.3
Errors afhandelen bij een SqlDataSource . . . . . . . . . . . . . . . . . 186
5.4.4
ObjectDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Rich Data Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 5.5.1
GridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
5.5.2
Data aanpassen in een GridView . . . . . . . . . . . . . . . . . . . . . 193
5.5.3
Een GridView opmaken . . . . . . . . . . . . . . . . . . . . . . . . . . 195
5.5.4
GridView templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Het Boekenwinkeltje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 5.6.1
KlantenDB.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
5.6.2
BoekDAL.xsd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
5.6.3
BoekBLL.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
5.6.4
Masterpage.master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
5.6.5
Catalogus.aspx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
5.6.6
Details.aspx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
5.6.7
Bestel.aspx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
5.6.8
Winkelwagentje.aspx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Erasmushogeschool Brussel
Gitte Vermeiren
INHOUDSOPGAVE
5.6.9 5.7
Registreer.aspx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
6 ASP .Net Gevorderde Begrippen 6.1
6.2
6.3
6.4
6.5
7.2
7.3
241
User Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 6.1.1
Een eenvoudige user control . . . . . . . . . . . . . . . . . . . . . . . . 241
6.1.2
Code toevoegen aan een user control . . . . . . . . . . . . . . . . . . . 245
Custom Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 6.2.1
Een (iets minder) eenvoudige custom server control . . . . . . . . . . . 251
6.2.2
Een control renderen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
6.2.3
Een custom server control testen . . . . . . . . . . . . . . . . . . . . . 253
6.2.4
HtmlTextWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
6.2.5
CompositeControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Themes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 6.3.1
Cascading Style Sheets . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
6.3.2
Themes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Het Boekenwinkeltje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 6.4.1
MyLogin.ascx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
6.4.2
Masterpage.master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
6.4.3
MyStyle.skin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
7 Beveiliging 7.1
5
274
Authenticatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 7.1.1
Introductie forms authentication . . . . . . . . . . . . . . . . . . . . . 275
7.1.2
Forms authentication implementeren . . . . . . . . . . . . . . . . . . . 275
Membership API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 7.2.1
Membership providers . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
7.2.2
Role Based Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
7.2.3
Security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Het Boekenwinketje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 7.3.1
web.config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
7.3.2
MyLogin.ascx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
7.3.3
Winkelwagentje.aspx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
7.3.4
Masterpage.master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Erasmushogeschool Brussel
Gitte Vermeiren
INHOUDSOPGAVE
6
7.3.5
Catalogus.aspx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
7.3.6
Details.aspx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
7.3.7
BeoordelingsExemplaar.aspx . . . . . . . . . . . . . . . . . . . . . . . 295
7.3.8
BoekenwinkeltjeRoleProvider klasse . . . . . . . . . . . . . . . . . . . 296
7.3.9
web.config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
7.3.10 /Docent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 7.3.11 /Docent/web.config . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 7.3.12 /Docent/Beoordeling.aspx . . . . . . . . . . . . . . . . . . . . . . . . . 305 7.3.13 Masterpage.Master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 7.3.14 Web.sitemap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 7.4
Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
8 Service Oriented Architectures 8.1
8.2
Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 8.1.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
8.1.2
Een eerste web service . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
8.1.3
Web services consumeren . . . . . . . . . . . . . . . . . . . . . . . . . 328
8.1.4
WebService klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
8.1.5
XML Vormgeven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Het Boekenwinkeltje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 8.2.1
8.3
321
Boekenwinkeltje.asmx . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Erasmushogeschool Brussel
Gitte Vermeiren