ASP.NET 4.0 mit Visual Basic 2010 – *ISBN

Werbung
Inhalt
Geleitwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
1
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
1.1
1.2
1.3
Was ist .NET?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programmiersprachen in Microsoft .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1
Die Common Language Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.2
Basisklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP.NET im .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP.NET im Vergleich zu ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP.NET im Vergleich zu ASP.NET 1.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die ASP.NET-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
36
38
38
41
41
42
43
44
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
2.1
2.2
Voraussetzungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installation des .NET Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1
Installation des IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2
Installation des .NET Frameworks. . . . . . . . . . . . . . . . . . . . . . . . . .
Visual Web Developer Express Edition installieren . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
48
48
51
52
60
Spracheinführung Visual Basic 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
3.1
3.2
62
63
64
66
69
69
76
82
87
90
1.4
1.5
1.6
1.7
2
2.3
2.4
3
3.3
Zur Einführung: Die Geschichte von Visual Basic . . . . . . . . . . . . . . . . . . . . .
Programmierung mit dem Visual Web Developer . . . . . . . . . . . . . . . . . . . . .
3.2.1
Erzeugung einer Website . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2
Das obligatorische »Hello World« . . . . . . . . . . . . . . . . . . . . . . . . . .
Grundbegriffe von Datentypen bis zu Schleifen . . . . . . . . . . . . . . . . . . . . . . .
3.3.1
Standarddatentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2
Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.3
Strukturierte Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.4
Wertetyp- und Referenztypsemantik . . . . . . . . . . . . . . . . . . . . . . . .
3.3.5
Kontrollstrukturen und Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . .
Inhalt
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
4
100
100
104
114
115
115
118
123
123
124
125
125
126
127
128
129
129
133
133
133
135
135
136
138
139
141
145
148
150
Formulare mit HTML Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.1
4.2
4.3
8
Programmelemente und Programmebenen . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1
Funktionen und Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2
Objektorientierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.3
Zusammenstellung von Bibliotheken, Einbindung von
Namespaces und externen Objekten. . . . . . . . . . . . . . . . . . . . . . . .
Basisfunktionen des .NET Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.1
Standardfunktionen und Methoden zur Stringmanipulation . . . . .
3.5.2
Andere nützliche Methoden und Funktionen . . . . . . . . . . . . . . . . .
Unterschiede zwischen Visual Basic 6 und Visual Basic 10 . . . . . . . . . . . . .
3.6.1
Das ist neu eingeführt worden . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.2
Das hat sich verändert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kompilierung von Programmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.1
Aufruf des Befehlszeilencompilers . . . . . . . . . . . . . . . . . . . . . . . . .
Bedingte Kompilierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fehler- und Ausnahmebehandlung in Visual Basic. . . . . . . . . . . . . . . . . . . .
3.9.1
Strukturierte Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9.2
Die Exception-Klasse des .NET Frameworks . . . . . . . . . . . . . . . . .
3.9.3
Unstrukturierte Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . .
3.9.4
Die Erzeugung von Ausnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Visual Basic 10 Neuerungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.10.1 Dynamische Spracherweiterungen . . . . . . . . . . . . . . . . . . . . . . . . .
3.10.2 Auflistungsinitialisierer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Support von Visual Basic im Visual Web Developer. . . . . . . . . . . . . . . . . . . .
3.11.1 Ein erster Eindruck der Möglichkeiten . . . . . . . . . . . . . . . . . . . . . .
3.11.2 Die Features des Visual Web Developer Editors . . . . . . . . . . . . . . .
3.11.3 Code erstellen mit IntelliSense-Unterstützung . . . . . . . . . . . . . . .
3.11.4 Der Codeausschnitt-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.11.5 Neue Features in der Version 2010 . . . . . . . . . . . . . . . . . . . . . . . . .
3.11.6 Dokumentation von Programmcode . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formulardaten von Hand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1
Versandmethode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.2
Formularfelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3
Ausgabe aller Formularangaben . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grundlegendes zu HTML Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formularversand mit HTML Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1
Formular serverseitig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2
Versand ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3
Das Formular ausblenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
152
152
156
162
166
169
169
170
176
Inhalt
4.4
4.5
4.6
4.7
5
178
178
180
181
181
183
184
187
189
194
196
Web Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
5.1
5.2
5.3
5.4
5.5
5.6
5.7
6
HTML Controls im Einsatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1
Textfeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.2
Passwortfeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.3
Mehrzeiliges Textfeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.4
Checkbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.5
Radiobutton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.6
Auswahlliste. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.7
Komplettes Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Spezialfall File-Upload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten im Kopfabschnitt der Seite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Textausgabe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formularelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1
Textfelder (und Passwortfelder). . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.2
Checkbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.3
Radiobutton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.4
Auswahlliste. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.5
Drop-down-Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.6
File-Uploads. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.7
Schaltfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control-Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Web Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.1
Ein Kalender-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.2
Mehrseitige Formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XHTML-Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control-IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
198
200
200
203
208
212
214
217
219
222
224
224
225
232
233
237
Formulare überprüfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
6.1
6.2
Worum geht es? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Validation Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1
Pflichtfelder: RequiredFieldValidator . . . . . . . . . . . . . . . . . . . . . . .
6.2.2
Eingaben im Intervall: RangeValidator . . . . . . . . . . . . . . . . . . . . . .
6.2.3
Werte vergleichen: CompareValidator . . . . . . . . . . . . . . . . . . . . . . .
6.2.4
Musterprüfung: RegularExpressionValidator . . . . . . . . . . . . . . . . .
6.2.5
Eigene Funktion: CustomValidator. . . . . . . . . . . . . . . . . . . . . . . . . .
240
243
243
246
248
252
259
9
Inhalt
6.3
6.4
6.5
6.6
7
7.8
7.9
7.10
7.11
7.12
7.13
7.14
7.15
Vergleich der Steuerelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Benutzersteuerelement definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wichtige Attribute der Control-Direktive . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inline-Code vs. Code Behind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Benutzersteuerelement in einer Seite verwenden . . . . . . . . . . . . . . . . . . . .
Eigenschaften und Methoden verwenden. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ereignisse verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.7.1
Ereignisbehandlung per Handles-Schlüsselwort. . . . . . . . . . . . . .
7.7.2
Ereignisbehandlung per AddHandler-Anweisung . . . . . . . . . . . . .
7.7.3
Deklarative Ereignisbehandlung per Attribut . . . . . . . . . . . . . . . . .
7.7.4
Beispiel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dynamisches Laden von Benutzersteuerelementen . . . . . . . . . . . . . . . . . . .
Benutzerdefiniertes Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Benutzerdefiniertes Steuerelement verwenden . . . . . . . . . . . . . . . . . . . . . .
In benutzerdefinierten Steuerelementen auf Ereignisse reagieren . . . . . . .
Eigenschaften und Methoden von benutzerdefinierten Steuerelementen .
7.12.1 Programmatischer Zugriff auf Eigenschaften und Methoden. . . .
Erweitern von existierenden Steuerelementen . . . . . . . . . . . . . . . . . . . . . . .
Attribute von benutzerdefinierten Steuerelementen . . . . . . . . . . . . . . . . . . .
7.14.1 Attribute auf Klassenebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.14.2 Attribute auf Eigenschaftsebene . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.14.3 Weitere Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
280
281
281
283
285
289
292
292
293
293
294
297
300
301
303
307
309
310
313
314
315
317
318
Seitenvorlagen und Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
8.1
10
265
265
270
271
274
276
276
277
278
Benutzer- und benutzerdefinierte Steuerelemente. . . . . . . . . . . . . . . . . . . . . . . . . 279
7.1
7.2
7.3
7.4
7.5
7.6
7.7
8
Fehlermeldungen ausgeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.1
Validierungsergebnis: ValidationSummary . . . . . . . . . . . . . . . . . . .
6.3.2
Dynamische Anzeige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.3
Layout der Fehlermeldungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formulare teilweise validieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formular-Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5.1
Formular versenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5.2
Überprüfung abbrechen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Seitenvorlage definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
8.1.1
Eine abgeleitete Seite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
8.1.2
Attribute der Master-Direktive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Inhalt
8.2
8.3
9
8.1.3
Standardinhalte definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.4
Titel der Seite festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.5
Zentrale Funktionen in der Seitenvorlage. . . . . . . . . . . . . . . . . . . .
8.1.6
Explizite Umwandlung des Vorlagentyps . . . . . . . . . . . . . . . . . . . .
8.1.7
Verwenden der MasterType-Direktive . . . . . . . . . . . . . . . . . . . . . . .
8.1.8
Zugriff auf Eigenschaften und Methoden der Seitenvorlage . . . . .
8.1.9
Seitenvorlage deklarativ vererben/schachteln . . . . . . . . . . . . . . . .
8.1.10 Seitenvorlage programmatisch vererben . . . . . . . . . . . . . . . . . . . .
8.1.11 Seitenvorlage dynamisch laden . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.1
Design definieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.2
Syntax für Designs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.3
Designs und Bilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.4
Zu verwendendes Design zentral festlegen . . . . . . . . . . . . . . . . . .
8.2.5
Zu verwendendes Design programmatisch festlegen . . . . . . . . . .
8.2.6
Verhindern, dass Designs zugewiesen werden. . . . . . . . . . . . . . . .
8.2.7
Designeinstellungen nur auf Stylesheet-Ebene übernehmen . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
327
331
332
334
335
335
336
339
342
345
345
347
349
350
351
354
354
354
Authentifizierung, Autorisierung und Anmeldung . . . . . . . . . . . . . . . . . . . . . . . . . . 355
9.1
9.2
9.3
9.4
9.5
9.6
9.7
Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einrichten der Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfiguration des Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfiguration einer Webapplikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwendung des Sicherheits-Setup-Assistenten . . . . . . . . . . . . . . . . . . . . .
Konfiguration ohne Assistenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.1
Benutzer erstellen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.2
Benutzer verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.3
Benutzer löschen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.4
Rollenmitgliedschaften von Benutzern bearbeiten . . . . . . . . . . . .
9.6.5
Authentifizierungstyp auswählen. . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.6
Rollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.7
Neue Rolle erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.8
Rollen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.9
Zugriffsregeln definieren oder verwalten . . . . . . . . . . . . . . . . . . . .
Authentifizierung manuell konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.7.1
Festlegen des Authentifizierungsmodus . . . . . . . . . . . . . . . . . . . . .
9.7.2
Hinterlegen von Benutzern in der web.config. . . . . . . . . . . . . . . . .
9.7.3
Schutz von Verzeichnissen deklarieren . . . . . . . . . . . . . . . . . . . . . .
9.7.4
Unterverzeichnis schützen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.7.5
Einzelne Dateien formularbasiert schützen . . . . . . . . . . . . . . . . . .
355
356
359
360
362
367
367
368
370
370
371
372
372
373
373
375
375
376
377
378
378
11
Inhalt
9.8
9.9
9.10
9.11
9.12
9.13
9.14
9.15
9.16
9.17
9.18
Windows-basierte Authentifizierung (IIS-Authentifizierung) konfigurieren
9.8.1
Standardauthentifizierung: einfache Absicherung aller
Elemente einer Applikation (vor IIS 7) . . . . . . . . . . . . . . . . . . . . . . .
9.8.2
Standardauthentifizierung: einfache Absicherung aller
Elemente einer Applikation (Windows Server 2008) . . . . . . . . . . .
9.8.3
Standardauthentifizierung: Einfache Absicherung aller
Elemente einer Applikation (Windows Vista, Windows 7) . . . . . . .
9.8.4
Standardauthentifizierung für IIS 7 und höher konfigurieren . . . .
9.8.5
Windows-Authentifizierung für .NET konfigurieren . . . . . . . . . . . .
Membership-Provider konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Login-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.10.1 Wichtige Eigenschaften des Login-Steuerelements . . . . . . . . . . .
Anmeldung über Membership-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dauerhafte Anmeldung realisieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.12.1 Länge der dauerhaften Anmeldung konfigurieren . . . . . . . . . . . . .
Registrierung von Benutzern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PasswordRecovery-Steuerelement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den Namen des angemeldeten Users ausgeben. . . . . . . . . . . . . . . . . . . . . .
9.15.1 Verwenden von Membership.GetUser() . . . . . . . . . . . . . . . . . . . . . .
9.15.2 Verwenden des LoginName-Steuerelements . . . . . . . . . . . . . . . . .
LoginStatus: in Abhängigkeit vom Anmeldestatus arbeiten . . . . . . . . . . . . .
LoginView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
379
380
380
381
382
384
384
387
389
391
394
394
395
398
401
402
403
404
405
406
10 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
10.1
10.2
10.3
10.4
10.5
12
Hinterlegen von Navigationsstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.1 SiteMapProvider konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.2 Aufbau der web.sitemap-Datei. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.3 Verteilen der Navigationsstruktur auf mehrere Dateien . . . . . . . .
Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2.1 Ausnahmen für bestimmte Gruppen definieren . . . . . . . . . . . . . . .
Unterschiedliche Anbieter verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programmatischer Zugriff auf Navigationsstrukturen . . . . . . . . . . . . . . . . .
10.4.1 Alle Knoten ausgeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.4.2 Pfad zum aktuellen Element ausgeben. . . . . . . . . . . . . . . . . . . . . .
SiteMapDataSource-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.5.1 Verwenden des SiteMapDataSource-Steuerelements . . . . . . . . . .
10.5.2 Filtern von Elementen des SiteMapDataSource-Steuerelements
407
408
409
411
413
415
416
417
417
422
425
425
425
Inhalt
10.6
10.7
10.8
10.9
Menu-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.6.1 Verwenden des Menu-Steuerelements . . . . . . . . . . . . . . . . . . . . . .
10.6.2 Ausgabemodus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.6.3 Darstellungsarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.6.4 Navigationen kombinieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.6.5 Navigationspunkte fest definieren . . . . . . . . . . . . . . . . . . . . . . . . . .
10.6.6 Schriften, Farben und Stile anpassen . . . . . . . . . . . . . . . . . . . . . . .
TreeView-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.7.1 Statische Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.7.2 TreeView programmatisch befüllen . . . . . . . . . . . . . . . . . . . . . . . . .
10.7.3 Dynamische und statische Knoten kombinieren . . . . . . . . . . . . . .
10.7.4 Knoten bei Bedarf laden und anzeigen lassen . . . . . . . . . . . . . . . .
10.7.5 TreeView und Client Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.7.6 Informationen per PostBack übermitteln . . . . . . . . . . . . . . . . . . . .
10.7.7 Schriften, Farben und Stile anpassen . . . . . . . . . . . . . . . . . . . . . . .
SiteMapPath-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.8.1 Verwenden des SiteMapPath-Steuerelements . . . . . . . . . . . . . . . .
10.8.2 Richtung der Darstellung ändern . . . . . . . . . . . . . . . . . . . . . . . . . .
10.8.3 Trennzeichen festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.8.4 Festlegen, wie viele übergeordnete Knoten angezeigt werden . . .
10.8.5 Aktuelles Element als Link darstellen. . . . . . . . . . . . . . . . . . . . . . .
10.8.6 Schriften, Farben und Stile anpassen . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
428
428
431
431
436
438
440
442
442
444
446
448
451
451
454
455
455
456
457
457
458
458
460
11 Datenhaltung mit Cookies und Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
11.1
11.2
11.3
Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.1 Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.2 Arbeiten mit Cookies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.3 Mehrere Informationen in einem Cookie. . . . . . . . . . . . . . . . . . . . .
11.1.4 Cookie-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sessions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.1 Grundlagen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.2 Mit einer Session arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Profile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.3.1 Profile anlegen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.3.2 Profile auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.3.3 Anonyme Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
462
462
465
472
478
482
482
486
496
496
498
500
13
Inhalt
12 Datei-Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
12.1
12.2
12.3
12.4
Begriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dateizugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.2.1 Textdatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.2.2 Binärdatei. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.2.3 Schwarzes Brett . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datei- und Verzeichnisinformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.3.1 Dateiinformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.3.2 Verzeichnisinformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.3.3 Verzeichnisbrowser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
505
506
506
521
524
532
532
534
536
540
13 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
13.1
13.2
13.3
13.4
E-Mail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.1.1 Einfache E-Mail versenden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.1.2 Konfiguration der E-Mail-Einstellungen . . . . . . . . . . . . . . . . . . . . .
13.1.3 Konfiguration per web.config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.1.4 HTML-E-Mail versenden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.1.5 Anhänge versenden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.1.6 Umlaute übertragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.1.7 Kopien und Blindkopien versenden . . . . . . . . . . . . . . . . . . . . . . . . .
13.1.8 Priorität einer E-Mail bestimmen . . . . . . . . . . . . . . . . . . . . . . . . . .
Webseiten abrufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2.1 Binäre Inhalte abrufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2.2 Daten übertragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2.3 Cookies übertragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2.4 Cookies abrufen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FTP-Daten übertragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.1 Inhalte abrufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.2 Inhalte senden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
545
546
550
551
553
556
559
560
561
561
563
564
570
571
571
572
575
577
14 Einführung in ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
14.1
14.2
14
Was ist ADO.NET? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.1.1 Der Weg zu ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.1.2 Die ADO.NET-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SQL – eine Kurzeinführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
580
580
581
587
Inhalt
14.3
14.4
14.5
14.6
14.7
14.8
14.9
Viele Wege führen zum Ziel – Hallo Welt aus der Datenbank . . . . . . . . . . . .
14.3.1 Vorbereitungen: Datenbank, Tabelle und Inhalt erstellen . . . . . . .
14.3.2 Daten aus einer Datenbank auslesen mittels Drag&Drop. . . . . . .
14.3.3 Daten aus einer Datenbank mit eigenem Code auslesen . . . . . . .
Mit Datenquellen kommunizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.4.1 Der Verbindungsaufbau zu einer Datenbank . . . . . . . . . . . . . . . . .
Einfaches Lesen und Schreiben von Daten. . . . . . . . . . . . . . . . . . . . . . . . . . .
14.5.1 Der DataReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.5.2 Die Methode ExecuteScalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.5.3 Daten ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.5.4 Einfache Ausgaben mit DataSet und DataAdapter . . . . . . . . . . . . .
Gespeicherte Prozeduren ansprechen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transaktionen mit ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das DataSet-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.8.1 DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.8.2 DataView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.8.3 Constraints und Relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.8.4 Das DataSet-Objekt in der Entwicklungsumgebung . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
594
594
598
600
603
605
610
610
612
614
617
621
628
631
632
636
640
643
647
15 Daten-Controls in ASP.NET 4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
15.1
15.2
15.3
15.4
15.5
DataSource-Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das GridView-Control näher betrachtet . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.2.1 Datensätze im GridView auswählen. . . . . . . . . . . . . . . . . . . . . . . . .
15.2.2 Die Sortierung über das GridView-Control steuern . . . . . . . . . . . .
15.2.3 Seitenwechsel in das GridView einführen . . . . . . . . . . . . . . . . . . . .
15.2.4 Datensätze im GridView verändern . . . . . . . . . . . . . . . . . . . . . . . . .
15.2.5 Formatvorlagen im GridView-Control . . . . . . . . . . . . . . . . . . . . . . .
Das DetailsView- und FormView-Control . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.3.1 Das DetailsView-Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.3.2 Das FormView-Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das ListView-, DataPager- und ChartControl . . . . . . . . . . . . . . . . . . . . . . . .
15.4.1 Grundlagen des ListView-Controls . . . . . . . . . . . . . . . . . . . . . . . . .
15.4.2 Gruppierungen im ListView-Control nutzen . . . . . . . . . . . . . . . . . .
15.4.3 Seitenwechsel mithilfe des DataPager-Controls einfügen . . . . . .
15.4.4 Datensätze im ListView-Control verändern . . . . . . . . . . . . . . . . . .
15.4.5 Chart Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
650
654
658
662
663
665
667
676
677
678
680
680
683
686
692
697
700
15
Inhalt
16 LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
16.1
16.2
16.3
16.4
16.5
16.6
16.7
Was ist LINQ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LINQ to Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.2.1 Erweiterungsmethoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.2.2 Standard-Query-Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.2.3 Beispielanwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LINQ to ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.3.1 LINQ to SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.3.2 DataContext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.3.3 LINQ to SQL-Klassendesigner . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.3.4 Datenbindung mittels Designerklassen . . . . . . . . . . . . . . . . . . . . .
16.3.5 Datenbindung mittels LinqDataSource . . . . . . . . . . . . . . . . . . . . . .
LINQ to XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LINQ to Entities – Entity Framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
QueryExtender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
704
705
705
706
707
711
711
711
712
718
720
723
726
736
737
17 Dynamic Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
17.1
17.2
17.3
17.4
Vorteile von Dynamic Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aktivieren von Dynamic Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwenden der Websitevorlage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17.3.1 Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17.3.2 Datenauswahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17.3.3 Die Rolle der Global.asax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17.3.4 Validierung von Feldinhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17.3.5 Anpassen der Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
739
740
742
743
743
743
745
746
751
18 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
18.1
18.2
16
XML-Grundlagen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.1.1 Regeln. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.1.2 Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.1.3 DTD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.1.4 Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.1.5 Datenzugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XML in .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.2.1 XmlReader zum Lesen und Schreiben . . . . . . . . . . . . . . . . . . . . . .
18.2.2 DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
753
755
758
760
762
763
765
765
782
Inhalt
18.3
Fortgeschrittene Technologien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.3.1 DataSets und XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.3.2 XmlDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.3.3 XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.3.4 XPath. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
793
793
804
806
811
19 WCF- und Webdienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
19.1
19.2
19.3
19.4
SOAP, WSDL und UDDI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19.1.1 Aufbau einer SOAP-Nachricht . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19.1.2 Datenidentität vs. Objektidentität. . . . . . . . . . . . . . . . . . . . . . . . . . .
19.1.3 WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WCF-Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19.2.1 Definition eines WCF-Dienstes. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19.2.2 Einbinden eines WCF-Dienstes . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19.2.3 Konfiguration von WCF-Dienste-Clients . . . . . . . . . . . . . . . . . . . . .
19.2.4 Definition von komplexen Datentypen . . . . . . . . . . . . . . . . . . . . . . .
19.2.5 Einweg-WCF-Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19.2.6 Asynchrone Methoden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19.2.7 Authentifizierung und Autorisierung in WCF-Diensten . . . . . . . . .
ASP.NET-Webdienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19.3.1 Bereitstellen eines ASP.NET-Webdienstes . . . . . . . . . . . . . . . . . . .
19.3.2 ASP.NET-Webdienst konsumieren . . . . . . . . . . . . . . . . . . . . . . . . . .
19.3.3 Adresse eines Webdienstes ändern . . . . . . . . . . . . . . . . . . . . . . . . .
19.3.4 Einweg-Methoden mit ASP.NET-Webdiensten . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
819
820
820
821
821
822
824
827
834
840
843
848
858
858
863
866
866
869
20 Grafiken on the fly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871
20.1
20.2
20.3
20.4
20.5
Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20.1.1 Exkurs: Dateiformate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Farbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transparenz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20.4.1 Einfache Formen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20.4.2 Andere Formen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pinsel und Stift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20.5.1 Pinsel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20.5.2 Musterpinsel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20.5.3 Verläufe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20.5.4 Stift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
872
874
877
880
882
882
883
888
888
891
892
897
17
Inhalt
20.6
20.7
20.8
Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
Antialiasing und weitere Methoden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
Eine Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908
21 Mobile Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
21.1
21.2
21.3
21.4
Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.2.1 Stapel und Karten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.2.2 Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.2.3 Verlinkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.2.4 Grafiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.2.5 Formulare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.2.6 ASP.NET Mobile Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mobile Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.3.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.3.2 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.3.3 Grafiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.3.4 Textfelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.3.5 Radiobuttons und Checkboxen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.3.6 Validation Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.3.7 Weitere Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21.3.8 Gerätespezifische Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
916
917
918
918
919
920
922
926
927
927
929
931
932
935
938
938
939
941
22 Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943
22.1
22.2
22.3
22.4
18
Nachteile und offene Punkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP.NET AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22.2.1 Grundlegende Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22.2.2 Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22.2.3 Fortschrittsanzeige – UpdateProgress . . . . . . . . . . . . . . . . . . . . . .
22.2.4 Clientseitige Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22.2.5 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22.2.6 ASP.NET AJAX Control Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jQuery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22.3.1 Einbau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22.3.2 Ajax-Aufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
944
945
946
949
949
950
954
961
965
966
968
970
Inhalt
23 Silverlight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971
23.1
23.2
23.3
23.4
Tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23.1.1 Silverlight Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23.1.2 Silverlight SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23.1.3 Silverlight beim Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23.1.4 Microsoft Expression Blend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Loslegen mit Silverlight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23.2.1 Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23.2.2 XAML-Oberfläche definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23.2.3 Silverlight starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23.2.4 Verschiedene Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23.2.5 Auf Ereignisse reagieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungen installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
972
972
972
973
973
973
973
975
977
977
979
982
985
24 Lokalisierung und Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987
24.1
24.2
24.3
24.4
Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988
24.1.1 Sprachen und Kulturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988
24.1.2 Kulturspezifische Ressourcen und Standardressourcen. . . . . . . . 989
24.1.3 Auflösung, welche Ressource verwendet werden muss . . . . . . . . 989
24.1.4 Definition von lokalen Ressourcen. . . . . . . . . . . . . . . . . . . . . . . . . . 990
24.1.5 Definition von globalen Ressourcen. . . . . . . . . . . . . . . . . . . . . . . . . 991
Zugriff auf Werte einer Ressource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
24.2.1 Das Localize-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993
24.2.2 Deklarativer Zugriff auf Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . 994
24.2.3 Programmatischer Zugriff auf lokale Ressource . . . . . . . . . . . . . . 997
24.2.4 Programmatischer Zugriff auf globale Ressource:
GetGlobalResourceObject(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998
24.2.5 Programmatischer Zugriff auf globale Ressource: typisierte
Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999
Lokalisierung aktivieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000
24.3.1 Deklaratives Festlegen in der web.config . . . . . . . . . . . . . . . . . . . . 1001
24.3.2 Deklaratives Festlegen in einer Seite . . . . . . . . . . . . . . . . . . . . . . . 1002
24.3.3 Programmatisches Festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002
24.3.4 Auswirkungen der Sprach- und Kultureinstellungen . . . . . . . . . . 1003
24.3.5 Sprache durch den Benutzer einstellen lassen . . . . . . . . . . . . . . . 1009
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012
19
Inhalt
25 Serialisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013
25.1
25.2
25.3
Binär . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018
25.2.1 Serialisieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018
25.2.2 Attribute zur Serialisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021
25.2.3 Deserialisieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023
SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025
26 Web Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031
26.1
26.2
26.3
Web-Part-Modi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032
26.1.1 WebPartManager und Zonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032
26.1.2 Zonenlayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033
26.1.3 Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038
WebPartDisplayMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1040
26.2.1 WebPartDisplayMode auslesen und ändern . . . . . . . . . . . . . . . . . . 1040
26.2.2 Katalogzonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1046
26.2.3 Weitere DisplayModes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051
27 ASP.NET MVC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053
27.1
27.2
27.3
27.4
27.5
20
MVC-Ansatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053
Einfache ASP.NET-MVC-Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055
27.2.1 Controller definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057
27.2.2 Anlegen einer Ansicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059
27.2.3 Routen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061
27.2.4 Daten an Anzeigen übergeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062
27.2.5 Parameter entgegennehmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066
27.2.6 Objekte als Parameter verwenden. . . . . . . . . . . . . . . . . . . . . . . . . . 1070
27.2.7 Nur POST- oder GET-Requests zulassen . . . . . . . . . . . . . . . . . . . . 1072
27.2.8 Auf eine andere Aktion weiterleiten. . . . . . . . . . . . . . . . . . . . . . . . . 1072
27.2.9 Andere Anzeige zur Darstellung nutzen . . . . . . . . . . . . . . . . . . . . . 1073
Daten validieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1074
27.3.1 Validieren von Eingaben per ModelState-Dictionary . . . . . . . . . . . 1074
27.3.2 Validieren von Eingaben per Attribut . . . . . . . . . . . . . . . . . . . . . . . . 1078
Formularbasierte Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086
Inhalt
28 Performance und Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087
28.1
28.2
28.3
28.4
Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088
28.1.1 Was ist Caching? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088
28.1.2 Output-Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091
28.1.3 Caching mit Parametern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092
28.1.4 Caching für jeden Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093
28.1.5 Caching je nach Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095
28.1.6 Fragmentelles Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096
28.1.7 Caching im Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098
Variablen im Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098
28.2.1 Zugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099
28.2.2 Lebensdauer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100
28.2.3 Abhängigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1101
28.2.4 Variablen entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103
Mehr Caching-Möglichkeiten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103
28.3.1 Aktionen nach dem Cachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103
28.3.2 SQL-Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1109
29 Fehlersuche und Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111
29.1
29.2
29.3
29.4
29.5
29.6
29.7
Fehlertypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112
Compilerausgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116
Debug-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117
Trace-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1119
29.4.1 Trace-Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1120
29.4.2 Eigene Ausgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123
Auf Fehler reagieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124
Der Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126
Tipps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1132
30 Web-Hacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133
30.1
30.2
30.3
30.4
30.5
Benutzereingaben. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135
XSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136
SQL Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142
Versteckte Felder? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147
21
Inhalt
31 Konfiguration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149
31.1
31.2
31.3
31.4
31.5
31.6
Konfigurationsdateien im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150
Der Aufbau der Konfigurationsdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150
.NET-Konfigurationsdateien und .ini-Dateien im Vergleich . . . . . . . . . . . . . 1151
Die unterschiedlichen Bereiche der Konfigurationsdateien im Detail. . . . . 1152
Der Einsatz von konfigurierbaren Eigenschaften . . . . . . . . . . . . . . . . . . . . . 1170
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173
Bonuskapitel auf der DVD
A
Neuerungen in Visual Studio 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201
A.1
A.2
A.3
A.4
A.5
B
Migration von Visual Basic nach C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213
B.1
B.2
22
Multi-Targeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201
Ansichten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204
CSS-Unterstützung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204
IntelliSense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211
Wesentliche Sprachunterschiede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213
B.1.1
Anweisungstrenner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214
B.1.2
Blöcke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215
B.1.3
Verzweigungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216
B.1.4
Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217
B.1.5
Variablendeklaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218
B.1.6
Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220
B.1.7
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1221
B.1.8
Funktionen und Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1222
B.1.9
By Value und By Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224
B.1.10 Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1225
B.1.11 Klassen und Namensräume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1227
B.1.12 Modifizierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1230
B.1.13 Typkonvertierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1230
B.1.14 Importieren von Typen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232
B.1.15 Erweiterungsmethoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232
Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233
B.2.1
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238
Inhalt
C
Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239
C.1
C.2
D
Quellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309
D.1
D.2
D.3
E
HTML Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239
C.1.1
Übergeordnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240
C.1.2
Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240
C.1.3
Formulare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1245
Web Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1250
C.2.1
Übergeordnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1250
C.2.2
Web Form Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1251
C.2.3
Komplexere Formularausgaben. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264
C.2.4
Navigations-Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268
C.2.5
Masterseiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274
C.2.6
Anmeldungs-Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1275
C.2.7
Controls zur Datenausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1291
C.2.8
Validierungs-Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300
C.2.9
Sonstige Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1304
Die mitgelieferten Hilfen im .NET Framework. . . . . . . . . . . . . . . . . . . . . . . . 1309
Microsofts Netzwerk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1310
Community-Websites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1313
Alternative Programmiersprachen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315
E.1
E.2
E.3
E.4
E.5
E.6
E.7
Das Beispiel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1316
JScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1317
Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1319
COBOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1321
Perl, Python und Ruby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324
PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324
Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1325
23
Herunterladen