bogen om asp.net 4.0 web forms - amazon web...
TRANSCRIPT
Copyright © 2010 Konsulentfirmaet M. Cronberg Aps
Bogen om ASP.NET 4.0 Web Forms
http://www.bogenomaspnet.dk
1. udgave, 2. oplag (oktober 2010)
Forlag:
Konsulentfirmaet M. Cronberg Aps
Tønnesvej 20
5270 Odense N
Mail: [email protected]
Web: http://blog.cronberg.dk
Forfatter: Michell Cronberg
Redaktør: Henrik Trojaborg
Korrektur: Gitte Buhr
Omslag: Claus Dalgaard
Tryk: Scandinavian Book A/S
ISBN: 978-87-993382-0-7
Bogen må ikke kopieres eller efterlignes helt eller delvist uden skriftlig tilladelse fra
forlaget. Hverken forlag, redaktør eller forfatter kan holdes økonomisk ansvarlig for
eventuelle fejl og mangler i bogen.
Indholdsfortegnelse
3
Indholdsfortegnelse
Indholdsfortegnelse .................................................................................................. 3
Indledning ............................................................................................................... 10
Forudsætninger ..................................................................................................... 11
Programmeringssprog i bogen .............................................................................. 11
ASP.NET-projekttyper .......................................................................................... 12
Links ..................................................................................................................... 13
Bogens website ..................................................................................................... 14
Introduktion til .NET og Visual Studio ................................................................ 15
Kort om .NET ....................................................................................................... 15
Common Language Runtime ............................................................................ 16
Base Class Library ............................................................................................ 17
Forskellige sprog ............................................................................................... 19
Visual Studio 2010 ................................................................................................ 20
Visual Studio 2010 Express .............................................................................. 20
Visual Studio 2010 Professional, Premium og Ultimate ................................... 20
SQL Server 2008 Express ................................................................................. 22
Rundt i Visual Studio ........................................................................................ 22
Design-vinduet .................................................................................................. 23
CSS – Cascading Style Sheets .......................................................................... 26
Source-vinduet .................................................................................................. 28
Code-vinduet ..................................................................................................... 31
Properties-vinduet ............................................................................................. 33
Fejlfinding ......................................................................................................... 34
Eksempel på udvikling af et lille website .......................................................... 37
Kort fortalt ............................................................................................................ 44
Grundlæggende webprogrammering ................................................................... 45
Webserveren ......................................................................................................... 45
HTTP .................................................................................................................... 46
Kommandoer ..................................................................................................... 47
Statuskoder ........................................................................................................ 50
Postback og roundtrip ....................................................................................... 50
Tilstand .............................................................................................................. 52
HTTP Proxy ...................................................................................................... 52
Indholdsfortegnelse
3
Indholdsfortegnelse
Indholdsfortegnelse .................................................................................................. 3
Indledning ............................................................................................................... 10
Forudsætninger ..................................................................................................... 11
Programmeringssprog i bogen .............................................................................. 11
ASP.NET-projekttyper .......................................................................................... 12
Links ..................................................................................................................... 13
Bogens website ..................................................................................................... 14
Introduktion til .NET og Visual Studio ................................................................ 15
Kort om .NET ....................................................................................................... 15
Common Language Runtime ............................................................................ 16
Base Class Library ............................................................................................ 17
Forskellige sprog ............................................................................................... 19
Visual Studio 2010 ................................................................................................ 20
Visual Studio 2010 Express .............................................................................. 20
Visual Studio 2010 Professional, Premium og Ultimate ................................... 20
SQL Server 2008 Express ................................................................................. 22
Rundt i Visual Studio ........................................................................................ 22
Design-vinduet .................................................................................................. 23
CSS – Cascading Style Sheets .......................................................................... 26
Source-vinduet .................................................................................................. 28
Code-vinduet ..................................................................................................... 31
Properties-vinduet ............................................................................................. 33
Fejlfinding ......................................................................................................... 34
Eksempel på udvikling af et lille website .......................................................... 37
Kort fortalt ............................................................................................................ 44
Grundlæggende webprogrammering ................................................................... 45
Webserveren ......................................................................................................... 45
HTTP .................................................................................................................... 46
Kommandoer ..................................................................................................... 47
Statuskoder ........................................................................................................ 50
Postback og roundtrip ....................................................................................... 50
Tilstand .............................................................................................................. 52
HTTP Proxy ...................................................................................................... 52
Indholdsfortegnelse
4
Begreber og teknologier ........................................................................................ 54
Cookies .............................................................................................................. 54
XHTML............................................................................................................. 55
CSS .................................................................................................................... 57
JavaScript .......................................................................................................... 58
AJAX................................................................................................................. 59
JQuery ............................................................................................................... 60
En webudviklers værktøjskasse ........................................................................ 62
Microsofts webteknologier ................................................................................... 64
ASP.NET Web Forms ....................................................................................... 64
ASP.NET MVC ................................................................................................. 65
Microsoft Silverlight ......................................................................................... 66
Kort fortalt ............................................................................................................ 67
Grundlæggende ASP.NET-programmering ........................................................ 69
Et ASP.NET-website ............................................................................................ 69
Brug af intern og ekstern kode .......................................................................... 73
Brug af DLL-filer .............................................................................................. 75
ASPX-filen – hjertet i Web Forms-udvikling ....................................................... 76
Indholdet i en ASPX-fil..................................................................................... 77
Fra ASPX til endelig HTML ................................................................................. 80
Behandlingen af ASPX-sider ............................................................................ 83
PostBack ............................................................................................................ 84
System.Web.UI.Page ........................................................................................ 85
Sidens mest benyttede hændelser ...................................................................... 85
Fang en hændelse i VB.NET ............................................................................. 87
Fang en hændelse fra Page i C# ........................................................................ 87
IsPostback ......................................................................................................... 89
MaintainScrollPositionOnPostBack .................................................................. 90
Tilgang til andre objekter fra Page-klassen ........................................................... 90
Request-objektet ................................................................................................ 92
Informationer om browseren ............................................................................. 92
Cookies sendt fra klienten ................................................................................. 94
Data sendt fra klienten....................................................................................... 94
Response-objektet ............................................................................................. 96
Cookies sendt til klienten .................................................................................. 96
Skriv direkte til siden ........................................................................................ 97
Navigering til en anden side .............................................................................. 99
Indholdsfortegnelse
4
Begreber og teknologier ........................................................................................ 54
Cookies .............................................................................................................. 54
XHTML............................................................................................................. 55
CSS .................................................................................................................... 57
JavaScript .......................................................................................................... 58
AJAX................................................................................................................. 59
JQuery ............................................................................................................... 60
En webudviklers værktøjskasse ........................................................................ 62
Microsofts webteknologier ................................................................................... 64
ASP.NET Web Forms ....................................................................................... 64
ASP.NET MVC ................................................................................................. 65
Microsoft Silverlight ......................................................................................... 66
Kort fortalt ............................................................................................................ 67
Grundlæggende ASP.NET-programmering ........................................................ 69
Et ASP.NET-website ............................................................................................ 69
Brug af intern og ekstern kode .......................................................................... 73
Brug af DLL-filer .............................................................................................. 75
ASPX-filen – hjertet i Web Forms-udvikling ....................................................... 76
Indholdet i en ASPX-fil..................................................................................... 77
Fra ASPX til endelig HTML ................................................................................. 80
Behandlingen af ASPX-sider ............................................................................ 83
PostBack ............................................................................................................ 84
System.Web.UI.Page ........................................................................................ 85
Sidens mest benyttede hændelser ...................................................................... 85
Fang en hændelse i VB.NET ............................................................................. 87
Fang en hændelse fra Page i C# ........................................................................ 87
IsPostback ......................................................................................................... 89
MaintainScrollPositionOnPostBack .................................................................. 90
Tilgang til andre objekter fra Page-klassen ........................................................... 90
Request-objektet ................................................................................................ 92
Informationer om browseren ............................................................................. 92
Cookies sendt fra klienten ................................................................................. 94
Data sendt fra klienten....................................................................................... 94
Response-objektet ............................................................................................. 96
Cookies sendt til klienten .................................................................................. 96
Skriv direkte til siden ........................................................................................ 97
Navigering til en anden side .............................................................................. 99
Indholdsfortegnelse
5
Server-objektet ................................................................................................ 100
Encode- og Decode-metoder ........................................................................... 101
Find den korrekte sti til en fil .......................................................................... 102
Kort fortalt .......................................................................................................... 103
Serverkontroller ................................................................................................... 105
Objekter overalt .................................................................................................. 105
Brug af kontroller ................................................................................................ 106
Oprettelse af opmærkninger ............................................................................ 107
Tilretning af egenskaber .................................................................................. 109
Kode til hændelser ........................................................................................... 109
Argumenter ..................................................................................................... 110
Navngivning af kontroller ............................................................................... 111
Placering af kontroller ..................................................................................... 113
Typer af kontroller .............................................................................................. 115
HTML serverkontroller ................................................................................... 115
ASP.NET Serverkontroller.............................................................................. 118
Tilgængelige serverkontroller ............................................................................. 122
Etiketter ........................................................................................................... 126
TextBox ........................................................................................................... 128
CheckBox og RadioButton.............................................................................. 129
Knapper ........................................................................................................... 133
Lister ............................................................................................................... 136
DropDownList ................................................................................................. 142
ListBox ............................................................................................................ 143
CheckBoxList og RadioButtonList ................................................................. 144
BulletedList ..................................................................................................... 145
HyperLink ....................................................................................................... 147
Panel og PlaceHolder ...................................................................................... 148
Calendar .......................................................................................................... 152
Valideringskontroller ...................................................................................... 154
BaseValidator .................................................................................................. 154
RequiredFieldValidator ................................................................................... 157
RangeValidator ............................................................................................... 158
CompareValidator ........................................................................................... 160
RegularExpressionValidator ........................................................................... 162
CustomValidator ............................................................................................. 164
ValidationSummary ........................................................................................ 167
Indholdsfortegnelse
5
Server-objektet ................................................................................................ 100
Encode- og Decode-metoder ........................................................................... 101
Find den korrekte sti til en fil .......................................................................... 102
Kort fortalt .......................................................................................................... 103
Serverkontroller ................................................................................................... 105
Objekter overalt .................................................................................................. 105
Brug af kontroller ................................................................................................ 106
Oprettelse af opmærkninger ............................................................................ 107
Tilretning af egenskaber .................................................................................. 109
Kode til hændelser ........................................................................................... 109
Argumenter ..................................................................................................... 110
Navngivning af kontroller ............................................................................... 111
Placering af kontroller ..................................................................................... 113
Typer af kontroller .............................................................................................. 115
HTML serverkontroller ................................................................................... 115
ASP.NET Serverkontroller.............................................................................. 118
Tilgængelige serverkontroller ............................................................................. 122
Etiketter ........................................................................................................... 126
TextBox ........................................................................................................... 128
CheckBox og RadioButton.............................................................................. 129
Knapper ........................................................................................................... 133
Lister ............................................................................................................... 136
DropDownList ................................................................................................. 142
ListBox ............................................................................................................ 143
CheckBoxList og RadioButtonList ................................................................. 144
BulletedList ..................................................................................................... 145
HyperLink ....................................................................................................... 147
Panel og PlaceHolder ...................................................................................... 148
Calendar .......................................................................................................... 152
Valideringskontroller ...................................................................................... 154
BaseValidator .................................................................................................. 154
RequiredFieldValidator ................................................................................... 157
RangeValidator ............................................................................................... 158
CompareValidator ........................................................................................... 160
RegularExpressionValidator ........................................................................... 162
CustomValidator ............................................................................................. 164
ValidationSummary ........................................................................................ 167
Indholdsfortegnelse
6
Kort fortalt .......................................................................................................... 169
ASP.NET AJAX .................................................................................................... 171
Hvad er AJAX..................................................................................................... 171
Bag om AJAX ................................................................................................. 173
Bag om ASP.NET AJAX ................................................................................ 174
Et ur uden AJAX ............................................................................................. 176
Et ur ved hjælp af UpdatePanel-kontrollen ..................................................... 177
Et ur ved hjælp af en PageMethod .................................................................. 179
AJAX Serverkontroller ....................................................................................... 182
ScriptManager-kontrollen ............................................................................... 183
Microsoft AJAX CDN .................................................................................... 185
UpdatePanel-kontrollen ................................................................................... 186
Brug af flere UpdatePanel kontroller .............................................................. 191
Triggers ........................................................................................................... 194
UpdateProgress-kontrollen .............................................................................. 195
Timer-kontrollen ............................................................................................. 197
AJAX Control Toolkit ........................................................................................ 198
Installation af AJAX Control Toolkit .............................................................. 200
Simpelt eksempel ............................................................................................ 200
Brug af PageMethods .......................................................................................... 202
Server-delen af en PageMethod ...................................................................... 202
Klient-delen af en PageMethod ....................................................................... 205
Kort fortalt .......................................................................................................... 208
Tilstand .................................................................................................................. 210
Tilstand relateret til en side ................................................................................. 210
Fordele og ulemper ved ViewState ................................................................. 212
Brug af ViewState i egen kode ........................................................................ 213
Slå ViewState til og fra ................................................................................... 215
Tilstand relateret til en applikation ..................................................................... 217
AppSettings ..................................................................................................... 217
Brug af AppSettings gennem opmærkninger .................................................. 220
Applikationsvariabler ...................................................................................... 220
Initalisering af applikationsvariabler ............................................................... 226
Cache ............................................................................................................... 227
Application caching ........................................................................................ 228
Cache afhængig af tid ...................................................................................... 230
Cache afhængig af filer og databaser .............................................................. 234
Indholdsfortegnelse
6
Kort fortalt .......................................................................................................... 169
ASP.NET AJAX .................................................................................................... 171
Hvad er AJAX..................................................................................................... 171
Bag om AJAX ................................................................................................. 173
Bag om ASP.NET AJAX ................................................................................ 174
Et ur uden AJAX ............................................................................................. 176
Et ur ved hjælp af UpdatePanel-kontrollen ..................................................... 177
Et ur ved hjælp af en PageMethod .................................................................. 179
AJAX Serverkontroller ....................................................................................... 182
ScriptManager-kontrollen ............................................................................... 183
Microsoft AJAX CDN .................................................................................... 185
UpdatePanel-kontrollen ................................................................................... 186
Brug af flere UpdatePanel kontroller .............................................................. 191
Triggers ........................................................................................................... 194
UpdateProgress-kontrollen .............................................................................. 195
Timer-kontrollen ............................................................................................. 197
AJAX Control Toolkit ........................................................................................ 198
Installation af AJAX Control Toolkit .............................................................. 200
Simpelt eksempel ............................................................................................ 200
Brug af PageMethods .......................................................................................... 202
Server-delen af en PageMethod ...................................................................... 202
Klient-delen af en PageMethod ....................................................................... 205
Kort fortalt .......................................................................................................... 208
Tilstand .................................................................................................................. 210
Tilstand relateret til en side ................................................................................. 210
Fordele og ulemper ved ViewState ................................................................. 212
Brug af ViewState i egen kode ........................................................................ 213
Slå ViewState til og fra ................................................................................... 215
Tilstand relateret til en applikation ..................................................................... 217
AppSettings ..................................................................................................... 217
Brug af AppSettings gennem opmærkninger .................................................. 220
Applikationsvariabler ...................................................................................... 220
Initalisering af applikationsvariabler ............................................................... 226
Cache ............................................................................................................... 227
Application caching ........................................................................................ 228
Cache afhængig af tid ...................................................................................... 230
Cache afhængig af filer og databaser .............................................................. 234
Indholdsfortegnelse
7
Output caching ................................................................................................ 236
Tilstand relateret til en session ............................................................................ 239
Sessionsvariabler ............................................................................................. 240
Identificering af brugere .................................................................................. 241
Brug af hændelser i global.asax ...................................................................... 242
Sessionsprovidere ............................................................................................ 243
En anonym profil ............................................................................................. 245
Kort fortalt .......................................................................................................... 249
Design .................................................................................................................... 250
Master pages ....................................................................................................... 250
En master page med design ............................................................................. 254
Default værdier ................................................................................................ 258
Hændelser ........................................................................................................ 261
Tilgang til kontroller ....................................................................................... 262
En dynamisk master page ................................................................................ 266
Master page angivet i web.config ................................................................... 267
En master page i en anden master page ........................................................... 267
Temaer ................................................................................................................ 268
CSS-filer .......................................................................................................... 269
Skin-filer ......................................................................................................... 272
Kontroller af samme type i et tema ................................................................. 273
Tilknytning af et tema ..................................................................................... 275
Dynamisk tema ................................................................................................ 276
Egen klasse der arver fra Page ........................................................................ 278
Kort fortalt .......................................................................................................... 280
Avanceret udvikling og brug af kontroller ......................................................... 282
Brugerkontroller .................................................................................................. 282
Udvikling af brugerkontrol.............................................................................. 283
Tilgang til egenskaber ..................................................................................... 288
Hændelser ........................................................................................................ 293
Partial Page Caching ....................................................................................... 295
Introduktion til udvikling af serverkontroller ..................................................... 296
En simpel kontrol ............................................................................................ 296
Registrering af en serverkontrol ...................................................................... 301
Dynamiske sider.................................................................................................. 303
Dynamiske brugerkontroller ........................................................................... 307
Kort fortalt .......................................................................................................... 314
Indholdsfortegnelse
7
Output caching ................................................................................................ 236
Tilstand relateret til en session ............................................................................ 239
Sessionsvariabler ............................................................................................. 240
Identificering af brugere .................................................................................. 241
Brug af hændelser i global.asax ...................................................................... 242
Sessionsprovidere ............................................................................................ 243
En anonym profil ............................................................................................. 245
Kort fortalt .......................................................................................................... 249
Design .................................................................................................................... 250
Master pages ....................................................................................................... 250
En master page med design ............................................................................. 254
Default værdier ................................................................................................ 258
Hændelser ........................................................................................................ 261
Tilgang til kontroller ....................................................................................... 262
En dynamisk master page ................................................................................ 266
Master page angivet i web.config ................................................................... 267
En master page i en anden master page ........................................................... 267
Temaer ................................................................................................................ 268
CSS-filer .......................................................................................................... 269
Skin-filer ......................................................................................................... 272
Kontroller af samme type i et tema ................................................................. 273
Tilknytning af et tema ..................................................................................... 275
Dynamisk tema ................................................................................................ 276
Egen klasse der arver fra Page ........................................................................ 278
Kort fortalt .......................................................................................................... 280
Avanceret udvikling og brug af kontroller ......................................................... 282
Brugerkontroller .................................................................................................. 282
Udvikling af brugerkontrol.............................................................................. 283
Tilgang til egenskaber ..................................................................................... 288
Hændelser ........................................................................................................ 293
Partial Page Caching ....................................................................................... 295
Introduktion til udvikling af serverkontroller ..................................................... 296
En simpel kontrol ............................................................................................ 296
Registrering af en serverkontrol ...................................................................... 301
Dynamiske sider.................................................................................................. 303
Dynamiske brugerkontroller ........................................................................... 307
Kort fortalt .......................................................................................................... 314
Indholdsfortegnelse
8
Data i ASP.NET .................................................................................................... 316
Data source-kontroller ........................................................................................ 316
SqlDataSource-kontrollen ............................................................................... 317
Databinding ......................................................................................................... 323
Simpel databinding .......................................................................................... 323
Avanceret databinding..................................................................................... 326
Avancerede datakontroller .................................................................................. 330
Repeater........................................................................................................... 331
DataList ........................................................................................................... 333
DetailsView og FormView.............................................................................. 336
GridView ......................................................................................................... 338
ListView og DataPager ................................................................................... 346
Valg mellem de forskellige kontroller ............................................................ 349
Kort fortalt .......................................................................................................... 349
Navigering ............................................................................................................. 351
Cross Page Posting .............................................................................................. 351
PostbackUrl ..................................................................................................... 352
PreviousPageType ........................................................................................... 354
Site Map .............................................................................................................. 358
XmlSiteMapProvider ...................................................................................... 358
SiteMapDataSource ......................................................................................... 360
Databinding ..................................................................................................... 361
SiteMapPath .................................................................................................... 363
Brug af Sitemap-objektet ................................................................................ 364
Routing ................................................................................................................ 366
Oprettelse af ruter ............................................................................................ 367
Parametre med predefinerede værdier ............................................................. 370
Kontrol af parametre ....................................................................................... 371
Aflæsning af parametre ................................................................................... 372
Links til ruter ................................................................................................... 375
Kort fortalt .......................................................................................................... 376
Beskyttelse af sider ............................................................................................... 378
Forms Authentication .......................................................................................... 379
Hvem har adgang ............................................................................................ 380
Hvad beskyttes ................................................................................................ 381
Opbevaring af brugernavn og password .......................................................... 384
Log ind og log ud ............................................................................................ 385
Indholdsfortegnelse
8
Data i ASP.NET .................................................................................................... 316
Data source-kontroller ........................................................................................ 316
SqlDataSource-kontrollen ............................................................................... 317
Databinding ......................................................................................................... 323
Simpel databinding .......................................................................................... 323
Avanceret databinding..................................................................................... 326
Avancerede datakontroller .................................................................................. 330
Repeater........................................................................................................... 331
DataList ........................................................................................................... 333
DetailsView og FormView.............................................................................. 336
GridView ......................................................................................................... 338
ListView og DataPager ................................................................................... 346
Valg mellem de forskellige kontroller ............................................................ 349
Kort fortalt .......................................................................................................... 349
Navigering ............................................................................................................. 351
Cross Page Posting .............................................................................................. 351
PostbackUrl ..................................................................................................... 352
PreviousPageType ........................................................................................... 354
Site Map .............................................................................................................. 358
XmlSiteMapProvider ...................................................................................... 358
SiteMapDataSource ......................................................................................... 360
Databinding ..................................................................................................... 361
SiteMapPath .................................................................................................... 363
Brug af Sitemap-objektet ................................................................................ 364
Routing ................................................................................................................ 366
Oprettelse af ruter ............................................................................................ 367
Parametre med predefinerede værdier ............................................................. 370
Kontrol af parametre ....................................................................................... 371
Aflæsning af parametre ................................................................................... 372
Links til ruter ................................................................................................... 375
Kort fortalt .......................................................................................................... 376
Beskyttelse af sider ............................................................................................... 378
Forms Authentication .......................................................................................... 379
Hvem har adgang ............................................................................................ 380
Hvad beskyttes ................................................................................................ 381
Opbevaring af brugernavn og password .......................................................... 384
Log ind og log ud ............................................................................................ 385
Indholdsfortegnelse
9
Membership ..................................................................................................... 390
Roller ............................................................................................................... 396
Brug af Membership-kontroller ...................................................................... 397
Brug af Membership og Roles-klasserne ........................................................ 400
Windows Authentication .................................................................................... 403
Kort fortalt .......................................................................................................... 405
Fejlhåndtering og overvågning............................................................................ 406
Trace ................................................................................................................... 406
Applikationsrelateret Trace ............................................................................. 411
Fejlhåndtering ..................................................................................................... 412
Fejlhåndtering på sideniveau ........................................................................... 413
Fejlhåndtering på applikationsniveau .............................................................. 415
Automatisk fejlhåndtering ............................................................................... 416
ELMAH........................................................................................................... 418
Health monitoring ............................................................................................... 419
Kort fortalt .......................................................................................................... 421
Konfigurering og distribuering ........................................................................... 423
Konfigurering ...................................................................................................... 423
Tilretning af web.config .................................................................................. 426
Kryptering af web.config ................................................................................ 428
Deployment ......................................................................................................... 429
Webserveren .................................................................................................... 430
XCopy ............................................................................................................. 432
Prekompilering ................................................................................................ 434
MSI – Windows Installer ................................................................................ 436
Distribuering af et webprojekt ......................................................................... 437
MSDeploy ....................................................................................................... 438
Kort fortalt .......................................................................................................... 440
Appendiks: Typer af applikationer ..................................................................... 441
Appendiks: Checkliste til nye projekter ............................................................. 444
Liste over bogens link ........................................................................................... 446
Liste over tabeller ................................................................................................. 450
Indeks .................................................................................................................... 451
Indholdsfortegnelse
9
Membership ..................................................................................................... 390
Roller ............................................................................................................... 396
Brug af Membership-kontroller ...................................................................... 397
Brug af Membership og Roles-klasserne ........................................................ 400
Windows Authentication .................................................................................... 403
Kort fortalt .......................................................................................................... 405
Fejlhåndtering og overvågning............................................................................ 406
Trace ................................................................................................................... 406
Applikationsrelateret Trace ............................................................................. 411
Fejlhåndtering ..................................................................................................... 412
Fejlhåndtering på sideniveau ........................................................................... 413
Fejlhåndtering på applikationsniveau .............................................................. 415
Automatisk fejlhåndtering ............................................................................... 416
ELMAH........................................................................................................... 418
Health monitoring ............................................................................................... 419
Kort fortalt .......................................................................................................... 421
Konfigurering og distribuering ........................................................................... 423
Konfigurering ...................................................................................................... 423
Tilretning af web.config .................................................................................. 426
Kryptering af web.config ................................................................................ 428
Deployment ......................................................................................................... 429
Webserveren .................................................................................................... 430
XCopy ............................................................................................................. 432
Prekompilering ................................................................................................ 434
MSI – Windows Installer ................................................................................ 436
Distribuering af et webprojekt ......................................................................... 437
MSDeploy ....................................................................................................... 438
Kort fortalt .......................................................................................................... 440
Appendiks: Typer af applikationer ..................................................................... 441
Appendiks: Checkliste til nye projekter ............................................................. 444
Liste over bogens link ........................................................................................... 446
Liste over tabeller ................................................................................................. 450
Indeks .................................................................................................................... 451
Indledning
10
Indledning
Velkommen til Bogen om ASP.NET 4.0 Web Forms – ASP.NET udvikling med C#
og VB.NET. Den handler om, hvordan man kan bruge Microsofts udviklingstekno-
logi ASP.NET 4.0 Web Forms, der primært er baseret på sider og kontroller, til at
skabe serverapplikationer med en brugerflade bestående af HTML og JavaScript (på
side 64 omtales kort to andre Microsoft-webteknologier).
Bogen er tænkt som en lærebog i ASP.NET 4.0 Web Forms både til privat anvendel-
se, i forbindelse med undervisning og til ansatte i virksomheder, som udvikler i
ASP.NET. Der er et detaljeret indeks sidst i bogen, så den også egner sig som op-
slagsværk.
De første kapitler er en introduktion til grundlæggende web- og ASP.NET-
udvikling, og de danner grundlaget for resten af bogen. Selv om man på forhånd
kender til den form for udvikling, bør man skimme kapitlerne igennem for at være
sikker på, at man ikke har for store huller i sin viden. Eksempelvis kan man godt
have udviklet i teknologier som PHP, JSP eller ASP.NET uden at vide, hvad en
cookie reelt er. I teknologier med et højt abstraktionsniveau, som ASP.NET, behøver
man ikke nødvendigvis den viden, men hvis man kender til cookies, og værktøjer
som kan afsløre, hvordan de fungerer, er man meget bedre hjulpet, når man skal til
at skrive kode, der anvender cookies. Det samme gælder den grundlæggende forstå-
else for page-frameworket,som er hjertet i ASP.NET (Web Forms) udvikling – hvis
man ikke har godt fat i det, bliver ASP.NET meget sværere, end det behøver at være.
Efter de indledende kapitler er resten af bogen dedikeret til de forskellige elementer i
ASP.NET. Bogen afsluttes med et par appendikser, som kan læses separat – herun-
der en tjekliste over, hvad man skal gennemtænke, inden man begynder på et nyt
projekt.
Indledning
11
Forudsætninger
Bogen henvender sig til alle, som har programmeringsmæssig erfaring, og som ger-
ne vil lære, hvordan man bruger ASP.NET 4.0 Web Forms. Med programmerings-
mæssig erfaring menes, at man helst skal kunne programmere, mens det i princippet
er ligegyldigt, hvilket sprog man har erfaring med. Det vil være en fordel, hvis man
kender C# eller VB.NET, fordi man så ved lidt om, hvordan .NET-platformen er
skruet sammen, kender sprogsyntaksen og har kendskab til Visual Studio. Men hvis
man kommer fra andre teknologier, som eksempelvis Java, er det også muligt at
bruge bogen til at lære ASP.NET. Det vigtigste er, at man har et grundlæggende
kendskab til objektorienteret programmering. Man kan ikke bruge bogen til at lære,
hvordan man programmerer i C# eller VB.NET – det kræver en grundlæggende
programmeringsbog. Ud over programmeringserfaring vil det være en fordel, at man
kender til grundlæggende HTML. Ikke at man skal være bekendt med alle HTML-
opmærkninger, men man skal helst vide, hvad HTML og tilhørende standarder er. I
starten af bogen bliver man introduceret til begreber og teknologier som HTTP, coo-
kies, JavaScript med videre, men et grundlæggende kendskab til, hvordan internettet
er skruet sammen, vil være en stor fordel.
Programmeringssprog i bogen
Selve .NET-platformen, som ASP.NET bygger oven på, kan bruges med mange
forskellige programmeringssprog, hvor de mest populære er C# og VB.NET (der er
nogenlunde lige mange udviklere i hver ”lejr”). Derfor er alle eksempler i bogen vist
i både VB.NET og C#. Der er i realiteten ikke meget, der skiller de to sprog fra hin-
anden, bortset fra syntaks, og de steder, hvor der er forskel, vil det blive beskrevet
grundigt. Der er dog en tydelig forskel på anvendelsen af VB.NET og C# i de meto-
der, der afvikles, når der sker en hændelse fra eksempelvis en kontrol. Typisk vil
eksempelvis hændelsen Click fra en knap (Button) resultere i opmærkninger og til-
hørende kode i VB.NET som følger:
Indledning
11
Forudsætninger
Bogen henvender sig til alle, som har programmeringsmæssig erfaring, og som ger-
ne vil lære, hvordan man bruger ASP.NET 4.0 Web Forms. Med programmerings-
mæssig erfaring menes, at man helst skal kunne programmere, mens det i princippet
er ligegyldigt, hvilket sprog man har erfaring med. Det vil være en fordel, hvis man
kender C# eller VB.NET, fordi man så ved lidt om, hvordan .NET-platformen er
skruet sammen, kender sprogsyntaksen og har kendskab til Visual Studio. Men hvis
man kommer fra andre teknologier, som eksempelvis Java, er det også muligt at
bruge bogen til at lære ASP.NET. Det vigtigste er, at man har et grundlæggende
kendskab til objektorienteret programmering. Man kan ikke bruge bogen til at lære,
hvordan man programmerer i C# eller VB.NET – det kræver en grundlæggende
programmeringsbog. Ud over programmeringserfaring vil det være en fordel, at man
kender til grundlæggende HTML. Ikke at man skal være bekendt med alle HTML-
opmærkninger, men man skal helst vide, hvad HTML og tilhørende standarder er. I
starten af bogen bliver man introduceret til begreber og teknologier som HTTP, coo-
kies, JavaScript med videre, men et grundlæggende kendskab til, hvordan internettet
er skruet sammen, vil være en stor fordel.
Programmeringssprog i bogen
Selve .NET-platformen, som ASP.NET bygger oven på, kan bruges med mange
forskellige programmeringssprog, hvor de mest populære er C# og VB.NET (der er
nogenlunde lige mange udviklere i hver ”lejr”). Derfor er alle eksempler i bogen vist
i både VB.NET og C#. Der er i realiteten ikke meget, der skiller de to sprog fra hin-
anden, bortset fra syntaks, og de steder, hvor der er forskel, vil det blive beskrevet
grundigt. Der er dog en tydelig forskel på anvendelsen af VB.NET og C# i de meto-
der, der afvikles, når der sker en hændelse fra eksempelvis en kontrol. Typisk vil
eksempelvis hændelsen Click fra en knap (Button) resultere i opmærkninger og til-
hørende kode i VB.NET som følger:
Indledning
12
<asp:Button ID="Button1" runat="server" Text="Button" />
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
Handles Button1.Click
End Sub
Koden, som er skabt af Visual Studio, binder knappens Click-hændelse sammen
med metoden ved hjælp af Handles-kodeordet, som det fremgår. I C# ser det lidt
anderledes ud:
<asp:Button ID="Button1" runat="server" Text="Button"
onclick="Button1_Click" />
protected void Button1_Click(object sender, EventArgs e)
{
}
I C# bindes metoden Button1_Click til knappens Click-hændelse direkte i opmærk-
ningerne. Der er i praksis ingen forskel på de to måder – i begge vil Button1_Click
blive afviklet, når der klikkes på knappen – og for ikke at bruge plads til at gentage
opmærkninger er C#-metoden brugt i alle bogens eksempler. Måden, hvorpå C#
binder hændelser til koden, virker dog også uden problemer i VB.NET (man dropper
blot Handles-kodeordet og angiver hændelsesmetoden i opmærkningerne – præcis
som i C#). Man skal altså ikke undre sig over, at bogen ikke bruger Handles-
kodeordet ligesom den kode, Visual Studio skaber. Resultatet bliver det samme.
ASP.NET-projekttyper
Man kan skabe to forskellige ASP.NET Web Forms-projekter i Visual Studio – et
website og en webapplikation, og der er en del forskel på de to typer både under
udvikling, test og især distribuering. Et website oprettes gennem New Web Site…
på File-menuen, og en webapplikation gennem New Project… på File-menuen. Her-
efter vælges ASP.NET Web Application på listen over mulige projekter.
Indledning
12
<asp:Button ID="Button1" runat="server" Text="Button" />
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
Handles Button1.Click
End Sub
Koden, som er skabt af Visual Studio, binder knappens Click-hændelse sammen
med metoden ved hjælp af Handles-kodeordet, som det fremgår. I C# ser det lidt
anderledes ud:
<asp:Button ID="Button1" runat="server" Text="Button"
onclick="Button1_Click" />
protected void Button1_Click(object sender, EventArgs e)
{
}
I C# bindes metoden Button1_Click til knappens Click-hændelse direkte i opmærk-
ningerne. Der er i praksis ingen forskel på de to måder – i begge vil Button1_Click
blive afviklet, når der klikkes på knappen – og for ikke at bruge plads til at gentage
opmærkninger er C#-metoden brugt i alle bogens eksempler. Måden, hvorpå C#
binder hændelser til koden, virker dog også uden problemer i VB.NET (man dropper
blot Handles-kodeordet og angiver hændelsesmetoden i opmærkningerne – præcis
som i C#). Man skal altså ikke undre sig over, at bogen ikke bruger Handles-
kodeordet ligesom den kode, Visual Studio skaber. Resultatet bliver det samme.
ASP.NET-projekttyper
Man kan skabe to forskellige ASP.NET Web Forms-projekter i Visual Studio – et
website og en webapplikation, og der er en del forskel på de to typer både under
udvikling, test og især distribuering. Et website oprettes gennem New Web Site…
på File-menuen, og en webapplikation gennem New Project… på File-menuen. Her-
efter vælges ASP.NET Web Application på listen over mulige projekter.
Indledning
13
Et website er det mest simple at have med at gøre – primært fordi det under udvik-
ling er baseret på en fast mappestruktur, og fordi det er nemt at kopiere filer fra ud-
vikling til produktion. En webapplikation er især god i situationer, hvor man ønsker
professionel styring af et projekt – herunder versionsstyring og distribuering – og det
skyldes blandt andet, at en webapplikation har sin egen project- og solutionfil i Vi-
sual Studio.
I en læreproces er det derfor nemmest at arbejde med et website, der i øvrigt også er
den mest udbredte ASP.NET-projekttype. Og derfor vil bogen bruge et website til at
beskrive de forskellige elementer i ASP.NET. Selv om man efterfølgende skal ar-
bejde med projekter baseret på en webapplikation, vil man sagtens kunne benytte
bogen som lærebog. Langt de fleste af de grundlæggende principper og elementer er
de samme som i projekter baseret på et website.
I slutningen af bogen findes et appendiks, som nærmere sammenligner de forskellige
projekttyper.
Links
Der er en del links i bogen, og mange af disse er meget lange. For at undgå at skulle
vise links i sin fulde længde er de forkortet ved hjælp af det glimrende danske site
kortlink.dk. Således vil et link som:
http://en.wikipedia.org/wiki/Comparison_of_open_source_software_facilities
der både optager plads i bogen, og tager lang til at skrive i browserens adresselinje,
blive vist som:
http://kortlink.dk/7krf
Tak til kortlink.dk for tilladelsen til at bruge tjenesten i denne bog.
Bagest i bogen findes i øvrigt en liste over samtlige links.
Indledning
13
Et website er det mest simple at have med at gøre – primært fordi det under udvik-
ling er baseret på en fast mappestruktur, og fordi det er nemt at kopiere filer fra ud-
vikling til produktion. En webapplikation er især god i situationer, hvor man ønsker
professionel styring af et projekt – herunder versionsstyring og distribuering – og det
skyldes blandt andet, at en webapplikation har sin egen project- og solutionfil i Vi-
sual Studio.
I en læreproces er det derfor nemmest at arbejde med et website, der i øvrigt også er
den mest udbredte ASP.NET-projekttype. Og derfor vil bogen bruge et website til at
beskrive de forskellige elementer i ASP.NET. Selv om man efterfølgende skal ar-
bejde med projekter baseret på en webapplikation, vil man sagtens kunne benytte
bogen som lærebog. Langt de fleste af de grundlæggende principper og elementer er
de samme som i projekter baseret på et website.
I slutningen af bogen findes et appendiks, som nærmere sammenligner de forskellige
projekttyper.
Links
Der er en del links i bogen, og mange af disse er meget lange. For at undgå at skulle
vise links i sin fulde længde er de forkortet ved hjælp af det glimrende danske site
kortlink.dk. Således vil et link som:
http://en.wikipedia.org/wiki/Comparison_of_open_source_software_facilities
der både optager plads i bogen, og tager lang til at skrive i browserens adresselinje,
blive vist som:
http://kortlink.dk/7krf
Tak til kortlink.dk for tilladelsen til at bruge tjenesten i denne bog.
Bagest i bogen findes i øvrigt en liste over samtlige links.
Indledning
14
Bogens website
Til slut skal det nævnes, at bogen har sit eget lille hjørne på nettet på adressen
http://www.bogenomaspnet.dk
Her vil man kunne finde information om bogen samt eventuelle tilføjelser og rettel-
ser.
God fornøjelse med bogen!
Odense, juni 2010
Michell Cronberg
Indledning
14
Bogens website
Til slut skal det nævnes, at bogen har sit eget lille hjørne på nettet på adressen
http://www.bogenomaspnet.dk
Her vil man kunne finde information om bogen samt eventuelle tilføjelser og rettel-
ser.
God fornøjelse med bogen!
Odense, juni 2010
Michell Cronberg
Introduktion til .NET og Visual Studio
15
Introduktion til .NET og Visual
Studio
ASP.NET er, som navnet antyder, en del af .NET frameworket, der i 2012 fylder 10
år. Det er i dag den mest populære og effektive måde at skrive applikationer til de
efterhånden adskillige Windows-platforme. Og der er virkelig mange, der udvikler
applikationer, primært i de to programmeringssprog C# og VB.NET. Langt de fleste
benytter Microsofts eget udviklingsmiljø kaldet Visual Studio.
Kapitlet her giver en kort introdution til frameworket, ligesom det går tæt på brugen
af Visual Studio med fokus på ASP.NET-udvikling. Kapitlet afsluttes med et kort
eksempel på udvikling af et simpelt ASP.NET website, så man kan få en idé om,
hvad Visual Studio kan.
Hvis du kender til .NET-udvikling, men ikke kender så meget til Visual Stu-
dio set med en ASP.NET-udviklers øjne, kan du roligt springe videre til side
20. De første par sider er blot en kort introduktion til de forskellige elementer
i .NET. Se eventuelt også ”Kort fortalt” sidst i kapitlet (side 44).
Kort om .NET
Siden den første version af .NET blev frigivet i 2002, har frameworket udviklet sig
kraftigt til den nuværende version – .NET 4.0.
Version Dato Visual Studio Integreret i
1.0 Februar 2002 Visual Studio .NET -
1.1 April 2003 Visual Studio .NET
2003
Windows Server 2003
2.0 November 2005 Visual Studio 2005 -
3.0 November 2006 - Vista og Server 2008
Introduktion til .NET og Visual Studio
15
Introduktion til .NET og Visual
Studio
ASP.NET er, som navnet antyder, en del af .NET frameworket, der i 2012 fylder 10
år. Det er i dag den mest populære og effektive måde at skrive applikationer til de
efterhånden adskillige Windows-platforme. Og der er virkelig mange, der udvikler
applikationer, primært i de to programmeringssprog C# og VB.NET. Langt de fleste
benytter Microsofts eget udviklingsmiljø kaldet Visual Studio.
Kapitlet her giver en kort introdution til frameworket, ligesom det går tæt på brugen
af Visual Studio med fokus på ASP.NET-udvikling. Kapitlet afsluttes med et kort
eksempel på udvikling af et simpelt ASP.NET website, så man kan få en idé om,
hvad Visual Studio kan.
Hvis du kender til .NET-udvikling, men ikke kender så meget til Visual Stu-
dio set med en ASP.NET-udviklers øjne, kan du roligt springe videre til side
20. De første par sider er blot en kort introduktion til de forskellige elementer
i .NET. Se eventuelt også ”Kort fortalt” sidst i kapitlet (side 44).
Kort om .NET
Siden den første version af .NET blev frigivet i 2002, har frameworket udviklet sig
kraftigt til den nuværende version – .NET 4.0.
Version Dato Visual Studio Integreret i
1.0 Februar 2002 Visual Studio .NET -
1.1 April 2003 Visual Studio .NET
2003
Windows Server 2003
2.0 November 2005 Visual Studio 2005 -
3.0 November 2006 - Vista og Server 2008
Introduktion til .NET og Visual Studio
16
Version Dato Visual Studio Integreret i
3.5 November 2007 Visual Studio 2008 Windows 7 og Server 2008
4.0 April 2010 Visual Studio 2010 -
Tabel 1. De forskellige .NET-versioner.
.NET frameworket findes til forskellige platforme – herunder en version kaldet
Compact Framework (CF), der kan installeres på små Windows Mobile-baserede
enheder såsom telefoner og PDA’er – men .NET arbejder primært på computere
med Windows XP, Vista eller Windows 7 og servere med Windows Server 2003
eller 2008.
Man kan godt blive lidt forvirret over begrebet .NET Framework, men det kan vel
bedst oversættes til .NET-kernen. Det er i praksis en installation på omkring 50 Mb,
der indeholder hele .NET-kernen. Når den er installeret, kan der skrives applikatio-
ner, som i stedet for at kommunikere direkte med operativsystemet kommunikerer
med .NET-kernen, som så efterfølgende kommunikerer med operativsystemet. På
den måde kan kernen eksempelvis optimere afvikling af kode direkte mod et opera-
tivsystem med hensyntagen til den konkrete maskines formåen, ligesom det er mu-
ligt at skabe platformsuafhængig kode.
.NET-kernen består af mange forskellige elementer, som skal bruges både i forbin-
delse med udvikling og afvikling af applikationer. Overordnet kan den opdeles i
følgende elementer:
En samling komponenter til oversættelse, afvikling og styring af applikatio-
ner, kaldet Common Language Runtime (CLR)
Hierarkisk samling af klassebiblioteker kaldet Base Class Libraries (BCL),
som indeholder mange klasser, strukturer og interfaces.
Common Language Runtime
Det vigtigste overordnede element kaldes CLR, som er en forkortelse for Common
Language Runtime. I dette element finder man alt det, der gør det muligt at afvikle
og styre .NET-applikationer – det være sig både Windows- og ASP.NET-
applikationer:
Introduktion til .NET og Visual Studio
16
Version Dato Visual Studio Integreret i
3.5 November 2007 Visual Studio 2008 Windows 7 og Server 2008
4.0 April 2010 Visual Studio 2010 -
Tabel 1. De forskellige .NET-versioner.
.NET frameworket findes til forskellige platforme – herunder en version kaldet
Compact Framework (CF), der kan installeres på små Windows Mobile-baserede
enheder såsom telefoner og PDA’er – men .NET arbejder primært på computere
med Windows XP, Vista eller Windows 7 og servere med Windows Server 2003
eller 2008.
Man kan godt blive lidt forvirret over begrebet .NET Framework, men det kan vel
bedst oversættes til .NET-kernen. Det er i praksis en installation på omkring 50 Mb,
der indeholder hele .NET-kernen. Når den er installeret, kan der skrives applikatio-
ner, som i stedet for at kommunikere direkte med operativsystemet kommunikerer
med .NET-kernen, som så efterfølgende kommunikerer med operativsystemet. På
den måde kan kernen eksempelvis optimere afvikling af kode direkte mod et opera-
tivsystem med hensyntagen til den konkrete maskines formåen, ligesom det er mu-
ligt at skabe platformsuafhængig kode.
.NET-kernen består af mange forskellige elementer, som skal bruges både i forbin-
delse med udvikling og afvikling af applikationer. Overordnet kan den opdeles i
følgende elementer:
En samling komponenter til oversættelse, afvikling og styring af applikatio-
ner, kaldet Common Language Runtime (CLR)
Hierarkisk samling af klassebiblioteker kaldet Base Class Libraries (BCL),
som indeholder mange klasser, strukturer og interfaces.
Common Language Runtime
Det vigtigste overordnede element kaldes CLR, som er en forkortelse for Common
Language Runtime. I dette element finder man alt det, der gør det muligt at afvikle
og styre .NET-applikationer – det være sig både Windows- og ASP.NET-
applikationer:
Introduktion til .NET og Visual Studio
17
Afvikling af kode
Hukommelsesstyring og hukommelsesoprydning
Oversættelse (kompilering) af den interne .NET-kode kaldet MSIL (Micro-
soft Intermediate Language) til binær eksekverbar kode
Sikkerhed
Fejlhåndtering
Styring af kommunikation mellem ægte .NET-kode og andre former for
Windows-komponenter som eksempelvis COM (Component Object Model)
Funktioner relateret til udvikling – herunder effektive muligheder for fejl-
finding (debug)
Definition af en mængde forskellige strukturer og klasser kaldet Common
Type System (CTS), som ligger til grund for de i .NET benyttede datatyper.
Uden CLR vil hverken udvikling eller afvikling af applikationer kunne finde sted,
men man behøver i realiteten ikke at kende noget til dette ellers vitale element –
heller ikke som ASP.NET-udvikler. Frameworket er designet til at klare opgaver
selv, og hvis man benytter Visual Studio til udvikling, vil man næppe blive rodet ud
i eksempelvis at arbejde direkte med kompilere.
Base Class Library
I .NET-kernen findes også BCL (Base Class Libraries), som stiller en meget stor
mængde klasser, strukturer og interfaces til rådighed for udviklere. I det fuldt ob-
jektorienterede klassebibliotek findes blandt andet klasser med funktionalitet som:
Grafik (GDI)
Adgang til data
Adgang til filsystem
Nem adgang til lokalnet og internet
XML-support
Web-applikationer
Forskellige former for Windows-applikationer
Serviceorienterede funktioner
Workflow
Matematiske funktioner
Kryptering.
Introduktion til .NET og Visual Studio
17
Afvikling af kode
Hukommelsesstyring og hukommelsesoprydning
Oversættelse (kompilering) af den interne .NET-kode kaldet MSIL (Micro-
soft Intermediate Language) til binær eksekverbar kode
Sikkerhed
Fejlhåndtering
Styring af kommunikation mellem ægte .NET-kode og andre former for
Windows-komponenter som eksempelvis COM (Component Object Model)
Funktioner relateret til udvikling – herunder effektive muligheder for fejl-
finding (debug)
Definition af en mængde forskellige strukturer og klasser kaldet Common
Type System (CTS), som ligger til grund for de i .NET benyttede datatyper.
Uden CLR vil hverken udvikling eller afvikling af applikationer kunne finde sted,
men man behøver i realiteten ikke at kende noget til dette ellers vitale element –
heller ikke som ASP.NET-udvikler. Frameworket er designet til at klare opgaver
selv, og hvis man benytter Visual Studio til udvikling, vil man næppe blive rodet ud
i eksempelvis at arbejde direkte med kompilere.
Base Class Library
I .NET-kernen findes også BCL (Base Class Libraries), som stiller en meget stor
mængde klasser, strukturer og interfaces til rådighed for udviklere. I det fuldt ob-
jektorienterede klassebibliotek findes blandt andet klasser med funktionalitet som:
Grafik (GDI)
Adgang til data
Adgang til filsystem
Nem adgang til lokalnet og internet
XML-support
Web-applikationer
Forskellige former for Windows-applikationer
Serviceorienterede funktioner
Workflow
Matematiske funktioner
Kryptering.
Introduktion til .NET og Visual Studio
18
Bibliotekerne er opbygget hierarkisk og består af namespaces. Et namespace kan
beskrives som en samling af klasser og strukturer under et fælles navn. I toppen af
BCL findes System-namespacet, der blandt andet indeholder klasser og strukturer til
alle de primitive datatyper som eksempelvis Int32 (32 bit heltal) og String (samling
af tegn). I System-namespacet ligger også Object-klassen, der ligger til grund for
alle andre klasser i .NET-kernen.
Under System findes mange andre namespaces, som kan tilgås gennem den såkaldte
punktumnotation, som benyttes i mange andre objektorienterede sprog. Af andre
namespaces kan eksempelvis nævnes Data (adgang til forskellige typer af databa-
ser), Xml (klasser til håndtering af XML-strukturer), Net (giver mulighed for at sen-
de og modtage data over et net), IO (adgang til filsystemet), Collections (muligheder
for mange forskellige former for datastrukturer), Drawing (grafik), Security (sikker-
hed) og Web (herunder ASP.NET).
Den nævnte punktumnotation fungerer ved, at hvert punktum repræsenterer et trin i
hierarkiet. Den klasse eller struktur, man ønsker at benytte, skal altid stå længst til
højre. Ønsker man eksempelvis at benytte en knap i ASP.NET, findes den klasse,
Button, som repræsenterer knappen, under et namespace kaldet WebControls, og
WebControls ligger i UI, som ligger i Web, som ligger i System:
System.Web.UI.WebControls.Button
Ønsker man at kryptere tekst, hvilket kan være en ekstremt kompliceret funktionali-
tet at kode, kan man benytte en af de mange klasser i BCL, der tilbyder kryptering.
Logisk kan klasserne findes under Security, der som tidligere nævnt “hænger” under
System. Under Security findes namespacet Cryptography, og i dette namespace fin-
des klasser, der repræsenterer forskellige former for krypteringsalgoritmer – eksem-
pelvis MD5, SHA eller RSA (alle standardiserede og komplicerede algoritmer til
kryptering). Adgang til eksempelvis MD5-algoritmen kan altså ske gennem punk-
tumnotationen:
System.Security.Cryptography.MD5CryptoServiceProvider
BCL er altså så logisk opbygget, at man ikke nødvendigvis kaster sig over dokumen-
tationen for at finde det, man leder efter – man arbejder sig så at sige blot ned i hie-
rarkiet, til man finder, hvad man søger. I Visual Studio kan fordelen ved denne op-
bygning tydeligt mærkes – Visual Studio indeholder en såkaldt Intellisense, som
Introduktion til .NET og Visual Studio
18
Bibliotekerne er opbygget hierarkisk og består af namespaces. Et namespace kan
beskrives som en samling af klasser og strukturer under et fælles navn. I toppen af
BCL findes System-namespacet, der blandt andet indeholder klasser og strukturer til
alle de primitive datatyper som eksempelvis Int32 (32 bit heltal) og String (samling
af tegn). I System-namespacet ligger også Object-klassen, der ligger til grund for
alle andre klasser i .NET-kernen.
Under System findes mange andre namespaces, som kan tilgås gennem den såkaldte
punktumnotation, som benyttes i mange andre objektorienterede sprog. Af andre
namespaces kan eksempelvis nævnes Data (adgang til forskellige typer af databa-
ser), Xml (klasser til håndtering af XML-strukturer), Net (giver mulighed for at sen-
de og modtage data over et net), IO (adgang til filsystemet), Collections (muligheder
for mange forskellige former for datastrukturer), Drawing (grafik), Security (sikker-
hed) og Web (herunder ASP.NET).
Den nævnte punktumnotation fungerer ved, at hvert punktum repræsenterer et trin i
hierarkiet. Den klasse eller struktur, man ønsker at benytte, skal altid stå længst til
højre. Ønsker man eksempelvis at benytte en knap i ASP.NET, findes den klasse,
Button, som repræsenterer knappen, under et namespace kaldet WebControls, og
WebControls ligger i UI, som ligger i Web, som ligger i System:
System.Web.UI.WebControls.Button
Ønsker man at kryptere tekst, hvilket kan være en ekstremt kompliceret funktionali-
tet at kode, kan man benytte en af de mange klasser i BCL, der tilbyder kryptering.
Logisk kan klasserne findes under Security, der som tidligere nævnt “hænger” under
System. Under Security findes namespacet Cryptography, og i dette namespace fin-
des klasser, der repræsenterer forskellige former for krypteringsalgoritmer – eksem-
pelvis MD5, SHA eller RSA (alle standardiserede og komplicerede algoritmer til
kryptering). Adgang til eksempelvis MD5-algoritmen kan altså ske gennem punk-
tumnotationen:
System.Security.Cryptography.MD5CryptoServiceProvider
BCL er altså så logisk opbygget, at man ikke nødvendigvis kaster sig over dokumen-
tationen for at finde det, man leder efter – man arbejder sig så at sige blot ned i hie-
rarkiet, til man finder, hvad man søger. I Visual Studio kan fordelen ved denne op-
bygning tydeligt mærkes – Visual Studio indeholder en såkaldt Intellisense, som
Introduktion til .NET og Visual Studio
19
indebærer, at der automatisk vises en liste over klasser og strukturer under et givet
namespace direkte i kodeeditoren.
En af de helt store fordele ved BCL er, at det er underordnet, hvilken applikationsty-
pe man arbejder med i .NET. Hvis man én gang har lært at sende en mail eller kryp-
tere tekst ved hjælp af klasser i BCL, gøres det på samme måde, hvad enten man
udvikler en Windows-, Konsol- eller ASP.NET-applikation.
Forskellige sprog
En af de helt store fordele ved .NET-teknologien er, at man ikke er bundet til et en-
kelt programmeringssprog. Som standard er der frigivet flere sprog fra Microsofts
side, hvoraf to lige nu er betydende: Visual Basic .NET (kaldet VB.NET) og Visual
C# .NET (kaldet C#). Ud over disse findes der mange sprog fra andre leverandører
end Microsoft, hvilket skyldes, at Microsoft har valgt at standardisere dele af .NET-
teknologien. Der findes eksempelvis sprog som COBOL, Eiffel, APL og mange
andre til afvikling under .NET-kernen.
Fælles for alle .NET-sprog er, at de alle har samme muligheder for objektorienteret
programmering, de har alle adgang til CLR og BCL, og de kan blandes i samme
projekt. Eksempelvis kan man sagtens producere en komponent i C# og efterfølgen-
de benytte den i VB.NET. Det hele kan lade sig gøre, fordi .NET-teknologien inde-
holder flere kompilere (oversættere) til at konvertere kode skrevet i eksempelvis
VB.NET til en eksekverbar fil.
Først benyttes en kompiler til at skabe den såkaldte IL-kode (Intermediate Langua-
ge-kode), og denne kode oversættes efterfølgende af en af de kompilere, der findes i
CLR til binær eksekverbar kode. Det giver ikke bare mulighed for at skabe sprog-
uafhængighed (der skal “blot” skabes en kompiler, der kan konvertere kode til IL,
hvorefter kernen selv foretager den efterfølgende kompilering). Det giver også mu-
lighed for platformuafhængighed.
Introduktion til .NET og Visual Studio
19
indebærer, at der automatisk vises en liste over klasser og strukturer under et givet
namespace direkte i kodeeditoren.
En af de helt store fordele ved BCL er, at det er underordnet, hvilken applikationsty-
pe man arbejder med i .NET. Hvis man én gang har lært at sende en mail eller kryp-
tere tekst ved hjælp af klasser i BCL, gøres det på samme måde, hvad enten man
udvikler en Windows-, Konsol- eller ASP.NET-applikation.
Forskellige sprog
En af de helt store fordele ved .NET-teknologien er, at man ikke er bundet til et en-
kelt programmeringssprog. Som standard er der frigivet flere sprog fra Microsofts
side, hvoraf to lige nu er betydende: Visual Basic .NET (kaldet VB.NET) og Visual
C# .NET (kaldet C#). Ud over disse findes der mange sprog fra andre leverandører
end Microsoft, hvilket skyldes, at Microsoft har valgt at standardisere dele af .NET-
teknologien. Der findes eksempelvis sprog som COBOL, Eiffel, APL og mange
andre til afvikling under .NET-kernen.
Fælles for alle .NET-sprog er, at de alle har samme muligheder for objektorienteret
programmering, de har alle adgang til CLR og BCL, og de kan blandes i samme
projekt. Eksempelvis kan man sagtens producere en komponent i C# og efterfølgen-
de benytte den i VB.NET. Det hele kan lade sig gøre, fordi .NET-teknologien inde-
holder flere kompilere (oversættere) til at konvertere kode skrevet i eksempelvis
VB.NET til en eksekverbar fil.
Først benyttes en kompiler til at skabe den såkaldte IL-kode (Intermediate Langua-
ge-kode), og denne kode oversættes efterfølgende af en af de kompilere, der findes i
CLR til binær eksekverbar kode. Det giver ikke bare mulighed for at skabe sprog-
uafhængighed (der skal “blot” skabes en kompiler, der kan konvertere kode til IL,
hvorefter kernen selv foretager den efterfølgende kompilering). Det giver også mu-
lighed for platformuafhængighed.
Introduktion til .NET og Visual Studio
20
Visual Studio 2010
Microsofts store udviklingsmiljø, kaldet Visual Studio, er for en .NET-udvikler,
hvad gær er for en bager – man kan i princippet godt undvære det, men det bliver
hurtigt meget besværligt at udføre dagens arbejde.
Visual Studio (ofte forkortet VS) har været en del af .NET lige siden de allerførste
versioner af .NET-frameworket, og man er med den nyeste version, kaldet Visual
Studio 2010, i stand til at udvikle alle typer af applikationer – fra små mobile til
komplicerede serviceorienterede systemer til afvikling på en stor serverfarm. Visual
Studio 2010 findes i flere forskellige versioner:
Visual Studio 2010 Express
Express-versionerne af Visual Studio 2010 er gratis – det eneste, man skal gøre, er at
hente dem fra Microsofts site. Også i Express-familien findes der forskellige typer.
Hvis man skal udvikle Windows-applikationer (exe-filer) eller Assemblies (dll-
filer), skal man have fat i enten Microsoft Visual Basic 2010 Express eller Microsoft
Visual C# 2010 Express afhængig af, om man bruger VB.NET eller C#. Hvis man
har planer om at udvikle blandt andet ASP.NET-applikationer, skal man have fat i
Visual Web Developer 2010 Express, i hvilken man både kan arbejde med VB.NET
og C#.
Visual Studio 2010 Express indeholder ikke samme funktionalitet som nogle af de
større versioner af Visual Studio, men hvis man gerne vil i gang med eksempelvis
ASP.NET, er det et meget brugbart udviklingsmiljø.
De forskellige Express-versioner kan findes på msdn.microsoft.com/express eller via
det officielle website for Visual Studio på www.microsoft.com/vstudio. På sidst-
nævnte findes en beskrivelse af forskellene mellem Express-versionerne og de større
versioner af Visual Studio.
Visual Studio 2010 Professional, Premium og Ultimate
Visual Studio 2010 kommer i tre forskellige versioner:
Introduktion til .NET og Visual Studio
20
Visual Studio 2010
Microsofts store udviklingsmiljø, kaldet Visual Studio, er for en .NET-udvikler,
hvad gær er for en bager – man kan i princippet godt undvære det, men det bliver
hurtigt meget besværligt at udføre dagens arbejde.
Visual Studio (ofte forkortet VS) har været en del af .NET lige siden de allerførste
versioner af .NET-frameworket, og man er med den nyeste version, kaldet Visual
Studio 2010, i stand til at udvikle alle typer af applikationer – fra små mobile til
komplicerede serviceorienterede systemer til afvikling på en stor serverfarm. Visual
Studio 2010 findes i flere forskellige versioner:
Visual Studio 2010 Express
Express-versionerne af Visual Studio 2010 er gratis – det eneste, man skal gøre, er at
hente dem fra Microsofts site. Også i Express-familien findes der forskellige typer.
Hvis man skal udvikle Windows-applikationer (exe-filer) eller Assemblies (dll-
filer), skal man have fat i enten Microsoft Visual Basic 2010 Express eller Microsoft
Visual C# 2010 Express afhængig af, om man bruger VB.NET eller C#. Hvis man
har planer om at udvikle blandt andet ASP.NET-applikationer, skal man have fat i
Visual Web Developer 2010 Express, i hvilken man både kan arbejde med VB.NET
og C#.
Visual Studio 2010 Express indeholder ikke samme funktionalitet som nogle af de
større versioner af Visual Studio, men hvis man gerne vil i gang med eksempelvis
ASP.NET, er det et meget brugbart udviklingsmiljø.
De forskellige Express-versioner kan findes på msdn.microsoft.com/express eller via
det officielle website for Visual Studio på www.microsoft.com/vstudio. På sidst-
nævnte findes en beskrivelse af forskellene mellem Express-versionerne og de større
versioner af Visual Studio.
Visual Studio 2010 Professional, Premium og Ultimate
Visual Studio 2010 kommer i tre forskellige versioner:
Introduktion til .NET og Visual Studio
21
Visual Studio 2010 Professional
Visual Studio 2010 Premium
Visual Studio 2010 Ultimate
I alle versionerne er der blandt andet:
support for versionskontrol (herunder Team Foundation Server)
mulighed for at udvikle applikationer til Windows, web, Office (Visual Stu-
dio Tools for Office, SharePoint med videre) og cloud (Azure)
mulighed for at benytte unit tests
forskellige former for standard debug-funktionalitet.
Premium-versionen udvider blandt andet muligheden for at teste kode (såsom Code
Coverage), yderligere debug-muligheder (såsom Code Metrics og Profiling), en del
værktøjer til database-udvikling (SQL Server) samt et par arkitektrelaterede værktø-
jer.
I den helt store Ultimate-version kan man vælge fra alle hylder, og man kan således
blandt andet bruge Web Performance- og Load testing, hvilket kan være interessant
for ASP.NET-udviklere, avancerede værktøjer relateret til debug, samt en masse
funktionalitet relateret til arkitektur (såsom UML-support).
De fleste ASP.NET-udviklere vil sikkert være dækket godt ind med Visual Studio
2010 Professional, men man kan læse om de forskellige versioner på det officielle
Visual Studio-site på www.microsoft.com/vstudio.
Microsoft har siden 2009 haft et program kaldet Microsoft WebSiteSpark som
henvender sig til virksomheder med op til ti ansatte, der udvikler webapplika-
tioner. Gennem dette program kan man få en del af Microsofts applikationer
og servere meget billigt eller i nogle situationer helt gratis. Det gælder også
forskellige versioner af den ”rigtige” Visual Studio (altså ikke Express-
versionerne). I skrivende stund kan man ”kun” få fat i Visual Studio 2008,
men mon ikke det erstattes af Visual Studio 2010 på et tidspunkt. Se nærmere
på kortlink.dk/7hrc eller søg efter ”microsoft website spark”.
Introduktion til .NET og Visual Studio
21
Visual Studio 2010 Professional
Visual Studio 2010 Premium
Visual Studio 2010 Ultimate
I alle versionerne er der blandt andet:
support for versionskontrol (herunder Team Foundation Server)
mulighed for at udvikle applikationer til Windows, web, Office (Visual Stu-
dio Tools for Office, SharePoint med videre) og cloud (Azure)
mulighed for at benytte unit tests
forskellige former for standard debug-funktionalitet.
Premium-versionen udvider blandt andet muligheden for at teste kode (såsom Code
Coverage), yderligere debug-muligheder (såsom Code Metrics og Profiling), en del
værktøjer til database-udvikling (SQL Server) samt et par arkitektrelaterede værktø-
jer.
I den helt store Ultimate-version kan man vælge fra alle hylder, og man kan således
blandt andet bruge Web Performance- og Load testing, hvilket kan være interessant
for ASP.NET-udviklere, avancerede værktøjer relateret til debug, samt en masse
funktionalitet relateret til arkitektur (såsom UML-support).
De fleste ASP.NET-udviklere vil sikkert være dækket godt ind med Visual Studio
2010 Professional, men man kan læse om de forskellige versioner på det officielle
Visual Studio-site på www.microsoft.com/vstudio.
Microsoft har siden 2009 haft et program kaldet Microsoft WebSiteSpark som
henvender sig til virksomheder med op til ti ansatte, der udvikler webapplika-
tioner. Gennem dette program kan man få en del af Microsofts applikationer
og servere meget billigt eller i nogle situationer helt gratis. Det gælder også
forskellige versioner af den ”rigtige” Visual Studio (altså ikke Express-
versionerne). I skrivende stund kan man ”kun” få fat i Visual Studio 2008,
men mon ikke det erstattes af Visual Studio 2010 på et tidspunkt. Se nærmere
på kortlink.dk/7hrc eller søg efter ”microsoft website spark”.
Introduktion til .NET og Visual Studio
22
SQL Server 2008 Express
Sammen med de forskellige versioner af Visual Studio kan man vælge at installere
SQL Server Express 2008, og selvom man ikke lige mener at have behov for at ar-
bejde på en lokal SQL Server, bør man alligevel installere databasen. Det skyldes
blandt andet, at nogle features i ASP.NET som udgangspunkt forsøger at tale med en
lokal SQL Express, og hvis den ikke findes, vil det skabe problemer. Man kan sag-
tens konfigurere sig ud af problemet ved at angive en anden database, men hvis man
er uerfaren med ASP.NET, er det uden tvivl nemmere bare at installere SQL Server
2008 Express.
Hvis man har installeret databasen, kan man overveje at supplere med SQL Server
2008 Management Studio Express, der bruges til at redigere databaser. Den kan
findes på kortlink.dk/6cqy eller installeres gennem Web Platform Installer, hvilket er
noget nemmere (kortlink.dk/7dqf).
Rundt i Visual Studio
Visual Studio 2010 er en stor applikation, der stiller en masse muligheder til rådig-
hed. Hvis man er helt uerfaren med Visual Studio, er det vigtigt at vide, hvordan
man finder de forskellige vinduer, som der henvises til i bogen her. I det følgende
gennemgås Visual Studio 2010 Professional, men der er ikke nogen større forskel i
den grundlæggende brug af Visual Studio mellem Visual Web Developer 2010 Ex-
press og de store versioner af Visual Studio 2010.
Følgende figur giver et overblik over de vigtigste vinduer:
Introduktion til .NET og Visual Studio
22
SQL Server 2008 Express
Sammen med de forskellige versioner af Visual Studio kan man vælge at installere
SQL Server Express 2008, og selvom man ikke lige mener at have behov for at ar-
bejde på en lokal SQL Server, bør man alligevel installere databasen. Det skyldes
blandt andet, at nogle features i ASP.NET som udgangspunkt forsøger at tale med en
lokal SQL Express, og hvis den ikke findes, vil det skabe problemer. Man kan sag-
tens konfigurere sig ud af problemet ved at angive en anden database, men hvis man
er uerfaren med ASP.NET, er det uden tvivl nemmere bare at installere SQL Server
2008 Express.
Hvis man har installeret databasen, kan man overveje at supplere med SQL Server
2008 Management Studio Express, der bruges til at redigere databaser. Den kan
findes på kortlink.dk/6cqy eller installeres gennem Web Platform Installer, hvilket er
noget nemmere (kortlink.dk/7dqf).
Rundt i Visual Studio
Visual Studio 2010 er en stor applikation, der stiller en masse muligheder til rådig-
hed. Hvis man er helt uerfaren med Visual Studio, er det vigtigt at vide, hvordan
man finder de forskellige vinduer, som der henvises til i bogen her. I det følgende
gennemgås Visual Studio 2010 Professional, men der er ikke nogen større forskel i
den grundlæggende brug af Visual Studio mellem Visual Web Developer 2010 Ex-
press og de store versioner af Visual Studio 2010.
Følgende figur giver et overblik over de vigtigste vinduer:
Introduktion til .NET og Visual Studio
23
Figur 1. Overblik over Visual Studio 2010.
Figuren viser, hvordan Visual Studio tager sig ud, når der arbejdes på et website. Til
venstre findes værktøjskassen (Toolbox), som indeholder de mange serverkontroller,
som gennemgås senere i bogen. Kontrollerne kan trækkes ind på eksempelvis en
aspx-side, som kan ses midt i billedet. Siden kan ses på tre forskellige måder – De-
sign, Source (som vist i figuren) og en kombination (Split). Uerfarne udviklere ar-
bejder normalt i Design-vinduet (kaldet designeren), fordi man der kan få en wysi-
wyg (what you se is what you get) præsentation, hvorimod erfarne udviklere oftest
arbejder i Source-vinduet for at have kontrol over opmærkningerne, og fordi det for
det meste er hurtigere. Øverst til højre ses Solution Explorer, hvor en solution (para-
ply for flere projekter), et enkelt projekt eller et website er organiseret. Nederst til
højre findes Properties-vinduet (egenskaber), hvor man kan tilrette eksempelvis
kontrollers egenskaber.
Design-vinduet
Når en side er i ”design-mode”, kan man arbejde med den mere eller mindre som et
dokument. Man kan skrive tekst, tilføje links og billeder og trække kontroller fra
Introduktion til .NET og Visual Studio
23
Figur 1. Overblik over Visual Studio 2010.
Figuren viser, hvordan Visual Studio tager sig ud, når der arbejdes på et website. Til
venstre findes værktøjskassen (Toolbox), som indeholder de mange serverkontroller,
som gennemgås senere i bogen. Kontrollerne kan trækkes ind på eksempelvis en
aspx-side, som kan ses midt i billedet. Siden kan ses på tre forskellige måder – De-
sign, Source (som vist i figuren) og en kombination (Split). Uerfarne udviklere ar-
bejder normalt i Design-vinduet (kaldet designeren), fordi man der kan få en wysi-
wyg (what you se is what you get) præsentation, hvorimod erfarne udviklere oftest
arbejder i Source-vinduet for at have kontrol over opmærkningerne, og fordi det for
det meste er hurtigere. Øverst til højre ses Solution Explorer, hvor en solution (para-
ply for flere projekter), et enkelt projekt eller et website er organiseret. Nederst til
højre findes Properties-vinduet (egenskaber), hvor man kan tilrette eksempelvis
kontrollers egenskaber.
Design-vinduet
Når en side er i ”design-mode”, kan man arbejde med den mere eller mindre som et
dokument. Man kan skrive tekst, tilføje links og billeder og trække kontroller fra
Introduktion til .NET og Visual Studio
24
værktøjskassen til siden. Mange kontroller har ligeledes i designeren en lille menu,
som kan tilgås ved at klikke på en lille pil øverst til højre i kontrollen.
Figur 2. Designeren i Visual Studio.
På Format-menuen findes ligeledes en masse muligheder for at tilrette fonte og far-
ver, ligesom der findes avancerede hjælpefunktioner til at ændre størrelse og place-
ring på en gruppe af kontroller.
De fleste udviklere vælger at designe siden ved enten at binde brugerfladen sammen
med en eller flere tabeller, eller ved at bruge CSS (Cascading Style Sheets) position
(layers), og begge muligheder kan bruges i Visual Studio. Når designeren er aktiv,
findes Table-menuen, som dels giver mulighed for at tilføje en ny HTML-tabel, dels
at tilrette en eksisterende.
Introduktion til .NET og Visual Studio
24
værktøjskassen til siden. Mange kontroller har ligeledes i designeren en lille menu,
som kan tilgås ved at klikke på en lille pil øverst til højre i kontrollen.
Figur 2. Designeren i Visual Studio.
På Format-menuen findes ligeledes en masse muligheder for at tilrette fonte og far-
ver, ligesom der findes avancerede hjælpefunktioner til at ændre størrelse og place-
ring på en gruppe af kontroller.
De fleste udviklere vælger at designe siden ved enten at binde brugerfladen sammen
med en eller flere tabeller, eller ved at bruge CSS (Cascading Style Sheets) position
(layers), og begge muligheder kan bruges i Visual Studio. Når designeren er aktiv,
findes Table-menuen, som dels giver mulighed for at tilføje en ny HTML-tabel, dels
at tilrette en eksisterende.
Introduktion til .NET og Visual Studio
25
Figur 3. Tilføjelse af en tabel.
Hvis man ønsker at benytte layers (mulighed i CSS for at placere elementer frit i et
HTML-element efter en x og y position), kan man under Set Position på Format-
menuen angive, om man ønsker Absolut eller Relative positionering for en eller flere
kontroller. Efterfølgende kan man så trække kontrollerne frit rundt på siden og pla-
cere dem, hvor man ønsker.
Det kan i øvrigt godt betale sig at se på mulighederne for at konfigurere designeren
(under Options på Tools-menuen). Her finder man blandt andet mulighed for at æn-
dre indstillingerne således, at designeren som udgangspunkt benytter CSS position.
Man kan også angive, hvilket vindue en ny side skal starte i, så er man træt af at
skulle klikke på Design, efter man har tilføjet en side, kan det rettes her en gang for
alle.
Introduktion til .NET og Visual Studio
25
Figur 3. Tilføjelse af en tabel.
Hvis man ønsker at benytte layers (mulighed i CSS for at placere elementer frit i et
HTML-element efter en x og y position), kan man under Set Position på Format-
menuen angive, om man ønsker Absolut eller Relative positionering for en eller flere
kontroller. Efterfølgende kan man så trække kontrollerne frit rundt på siden og pla-
cere dem, hvor man ønsker.
Det kan i øvrigt godt betale sig at se på mulighederne for at konfigurere designeren
(under Options på Tools-menuen). Her finder man blandt andet mulighed for at æn-
dre indstillingerne således, at designeren som udgangspunkt benytter CSS position.
Man kan også angive, hvilket vindue en ny side skal starte i, så er man træt af at
skulle klikke på Design, efter man har tilføjet en side, kan det rettes her en gang for
alle.
Introduktion til .NET og Visual Studio
26
Figur 4. Tilretning af egenskaber for designeren.
Alt, hvad man foretager sig i designeren, resulterer i en tilretning af opmærk-
ningerne, som man kan se ved at klikke på Source. Designeren er blot et mere
visuelt værktøj til at skabe opmærkninger.
CSS – Cascading Style Sheets
Der findes mange værktøjer i Visual Studio, der gør det nemt at arbejde med CSS –
faktisk så mange, at man kan blive lidt overvældet.
Hvis man vil tilføje CSS, kan man på View-menuen finde en genvej til Apply Sty-
les-vinduet, som normalt dukker op som et docket vindue til venstre i Visual Studio.
Herfra kan man enten tilføje et nyt style sheet eller tilknytte et eksisterende til en
side ved at klikke på de små ikoner øverst i vinduet.
Introduktion til .NET og Visual Studio
26
Figur 4. Tilretning af egenskaber for designeren.
Alt, hvad man foretager sig i designeren, resulterer i en tilretning af opmærk-
ningerne, som man kan se ved at klikke på Source. Designeren er blot et mere
visuelt værktøj til at skabe opmærkninger.
CSS – Cascading Style Sheets
Der findes mange værktøjer i Visual Studio, der gør det nemt at arbejde med CSS –
faktisk så mange, at man kan blive lidt overvældet.
Hvis man vil tilføje CSS, kan man på View-menuen finde en genvej til Apply Sty-
les-vinduet, som normalt dukker op som et docket vindue til venstre i Visual Studio.
Herfra kan man enten tilføje et nyt style sheet eller tilknytte et eksisterende til en
side ved at klikke på de små ikoner øverst i vinduet.
Introduktion til .NET og Visual Studio
27
Figur 5. Tilføjelse af CSS.
På View-menuen findes også en genvej til Manage Styles, som giver et rigtig godt
overblik over styles samt mulighed for at tilrette dem.
Der findes ligeledes et CSS Properties-vindue som, både i Design- og Source-
vinduet, kan bruges til hurtigt at tilrette en konkret style. Vinduet kan ligeledes fin-
des på View-menuen.
Figur 6. CSS Properties-vinduet.
Introduktion til .NET og Visual Studio
27
Figur 5. Tilføjelse af CSS.
På View-menuen findes også en genvej til Manage Styles, som giver et rigtig godt
overblik over styles samt mulighed for at tilrette dem.
Der findes ligeledes et CSS Properties-vindue som, både i Design- og Source-
vinduet, kan bruges til hurtigt at tilrette en konkret style. Vinduet kan ligeledes fin-
des på View-menuen.
Figur 6. CSS Properties-vinduet.
Introduktion til .NET og Visual Studio
28
Sluttelig findes der en CSS Style-værktøjslinje, som kan aktiveres ved eksempelvis
at højreklikke et tomt sted på en eksisterende værktøjslinje lige under menuen.
Source-vinduet
I Source-vinduet arbejder man direkte med opmærkninger, hvilket kan lyde lidt
tungt, men Visual Studio hjælper meget til, så i mange tilfælde er det faktisk hurtige-
re at arbejde her frem for i Design-vinduet. Det kræver dog, at man ved, hvilke op-
mærkninger man skal bruge, hvorfor Source-vinduet ikke er så populært hos begyn-
dere.
Hvis man har tænkt sig at arbejde meget i Source-vinduet, kan det godt betale sig at
kende til de muligheder Visual Studio stiller til rådighed. For det første findes der
den såkaldte Intellisense-feature, som i den grad hjælper med til at skrive opmærk-
ninger ved, ret intelligent, at komme med forslag baseret på det indtastede, som
nemt kan indsættes ved cursoren.
Figur 7. Intellisense i Source-vinduet.
Intellisense er aktiv og hjælper både i forbindelse med HTML- og ASP.NET-
opmærkninger, og sågar også når man skriver JavaScript (herunder også eksempel-
vis kald til egne funktioner).
Introduktion til .NET og Visual Studio
28
Sluttelig findes der en CSS Style-værktøjslinje, som kan aktiveres ved eksempelvis
at højreklikke et tomt sted på en eksisterende værktøjslinje lige under menuen.
Source-vinduet
I Source-vinduet arbejder man direkte med opmærkninger, hvilket kan lyde lidt
tungt, men Visual Studio hjælper meget til, så i mange tilfælde er det faktisk hurtige-
re at arbejde her frem for i Design-vinduet. Det kræver dog, at man ved, hvilke op-
mærkninger man skal bruge, hvorfor Source-vinduet ikke er så populært hos begyn-
dere.
Hvis man har tænkt sig at arbejde meget i Source-vinduet, kan det godt betale sig at
kende til de muligheder Visual Studio stiller til rådighed. For det første findes der
den såkaldte Intellisense-feature, som i den grad hjælper med til at skrive opmærk-
ninger ved, ret intelligent, at komme med forslag baseret på det indtastede, som
nemt kan indsættes ved cursoren.
Figur 7. Intellisense i Source-vinduet.
Intellisense er aktiv og hjælper både i forbindelse med HTML- og ASP.NET-
opmærkninger, og sågar også når man skriver JavaScript (herunder også eksempel-
vis kald til egne funktioner).
Introduktion til .NET og Visual Studio
29
Figur 8. Intellisense når der skrives JavaScript.
Nogle af de funktioner, som sparer en masse tid, er de såkaldte Markup-snippets,
som fungerer ved, at man angiver starten på en opmærkning, og herefter trykker to
gange på tabuleringsknappen – så indsættes en samling opmærkninger. Man kan
eksempelvis skrive <ta og herefter trykke to gange tabulering – det vil resultere i, at
skelettet til en HTML-tabel indsættes.
Figur 9. Markup-snippet i funktion.
Man kan se de forskellige snippets ved at højreklikke et sted i Source-vinduet, og det
afslører også en anden fiks feature kaldet Surround With.
Introduktion til .NET og Visual Studio
29
Figur 8. Intellisense når der skrives JavaScript.
Nogle af de funktioner, som sparer en masse tid, er de såkaldte Markup-snippets,
som fungerer ved, at man angiver starten på en opmærkning, og herefter trykker to
gange på tabuleringsknappen – så indsættes en samling opmærkninger. Man kan
eksempelvis skrive <ta og herefter trykke to gange tabulering – det vil resultere i, at
skelettet til en HTML-tabel indsættes.
Figur 9. Markup-snippet i funktion.
Man kan se de forskellige snippets ved at højreklikke et sted i Source-vinduet, og det
afslører også en anden fiks feature kaldet Surround With.
Introduktion til .NET og Visual Studio
30
Figur 10. Tilgang til snippets.
Surround With kan bruges til at omkranse en opmærkning med en HTML- eller
ASP.NET-opmærkning. Man kan eksempelvis skrive Test, markere ordet, trykke
CTRL K + CTRL S (genvej til Surrond With) og vælge Span på HTML-menuen –
så bliver Test til <span>Test</span>.
Figur 11. Surround With i funktion.
Både Markup-snippets og Surround With er geniale, når først tastaturgenvejene sid-
der i fingrene, og man kan spare en masse tid, hvis man vænner sig til at bruge værk-
tøjerne. Se de forskellige muligheder på Edit-menuen.
På samme menu under Advanced findes flere meget brugbare funktioner, men en af
dem skal fremhæves – Format Document (CTRL K + D) – fordi den også gør det
nemt at arbejde i opmærkninger. Den sørger for at formatere et dokument, så op-
mærkninger placeres korrekt i forhold til hinanden, og gør det nemt at få overblik
over en side med mange opmærkninger.
Introduktion til .NET og Visual Studio
30
Figur 10. Tilgang til snippets.
Surround With kan bruges til at omkranse en opmærkning med en HTML- eller
ASP.NET-opmærkning. Man kan eksempelvis skrive Test, markere ordet, trykke
CTRL K + CTRL S (genvej til Surrond With) og vælge Span på HTML-menuen –
så bliver Test til <span>Test</span>.
Figur 11. Surround With i funktion.
Både Markup-snippets og Surround With er geniale, når først tastaturgenvejene sid-
der i fingrene, og man kan spare en masse tid, hvis man vænner sig til at bruge værk-
tøjerne. Se de forskellige muligheder på Edit-menuen.
På samme menu under Advanced findes flere meget brugbare funktioner, men en af
dem skal fremhæves – Format Document (CTRL K + D) – fordi den også gør det
nemt at arbejde i opmærkninger. Den sørger for at formatere et dokument, så op-
mærkninger placeres korrekt i forhold til hinanden, og gør det nemt at få overblik
over en side med mange opmærkninger.
Introduktion til .NET og Visual Studio
31
Man kan finde en liste over alle genveje under Help-menuen (eller sikkert endnu
nemmere via Google).
Code-vinduet
Når man arbejder med kode – hvad enten der er tale om Code Behind, selvstændige
klasser eller andre filer – foregår det i Code-vinduet. Det aktiveres ved eksempelvis
at dobbeltklikke på en kodefil i Solution Explorer eller vælge Code på View-
menuen.
Figur 12. Code-vinduet.
Hvis man arbejder med en code behind-fil (en fil med kode relateret til en konkret
side – mere herom senere), kan man også aktivere Code-vinduet ved at dobbeltklik-
ke på en kontrol eller et tomt sted på siden. Det vil aktivere vinduet og indsætte ska-
belonen for en konkret hændelse. I Code-vinduet kan man få megen hjælp ligesom i
Source-vinduet. Her er ligeledes Intellisense, så det eksempelvis er nemt at navigere
og vælge mellem medlemmer i en klasse.
Figur 13. Intellisense i Code-vinduet.
Introduktion til .NET og Visual Studio
32
Her er også snippets, som indsætter kode fra en skabelon, men her hedder det Code-
snippets i stedet for Markup-snippets. De findes både til C# og VB.NET og tilgås
nemmest ved at højreklikke et sted i Code-vinduet og vælge Insert Snippet.
Figur 14. Brug af snippets.
Der findes ligeledes Surround With-snippets, der kan omkranse eksisterende kode
med eksempelvis en for-løkke eller Try catch-struktur. Surround With kan nemmest
tilgås via højrekliksmenuen, men man lærer hurtigt at skrive eksempelvis ”for”, som
er genvej til en for-løkke, og så trykke to gange på tabuleringstasten for at indsætte
koden.
Afhængig af sprog og version af Visual Studio findes der også en del Refactor-
funktioner, som også virkelig kan spare megen tid, hvis man lærer dem at kende.
Der findes eksempelvis en funktion, der i forbindelse med omdøbning af et variabel-
eller metodenavn automatisk også sørger for at rette alle henvisninger og kald andre
steder i koden.
Figur 15. C# refactor-funktioner i Visual Studio Pro.
Hvis man gerne vil rette indstillingerne i de forskellige vinduer – herunder Code-
vinduet – kan man i Options på Tools-menuen under Text Editor angive forskellige
Introduktion til .NET og Visual Studio
32
Her er også snippets, som indsætter kode fra en skabelon, men her hedder det Code-
snippets i stedet for Markup-snippets. De findes både til C# og VB.NET og tilgås
nemmest ved at højreklikke et sted i Code-vinduet og vælge Insert Snippet.
Figur 14. Brug af snippets.
Der findes ligeledes Surround With-snippets, der kan omkranse eksisterende kode
med eksempelvis en for-løkke eller Try catch-struktur. Surround With kan nemmest
tilgås via højrekliksmenuen, men man lærer hurtigt at skrive eksempelvis ”for”, som
er genvej til en for-løkke, og så trykke to gange på tabuleringstasten for at indsætte
koden.
Afhængig af sprog og version af Visual Studio findes der også en del Refactor-
funktioner, som også virkelig kan spare megen tid, hvis man lærer dem at kende.
Der findes eksempelvis en funktion, der i forbindelse med omdøbning af et variabel-
eller metodenavn automatisk også sørger for at rette alle henvisninger og kald andre
steder i koden.
Figur 15. C# refactor-funktioner i Visual Studio Pro.
Hvis man gerne vil rette indstillingerne i de forskellige vinduer – herunder Code-
vinduet – kan man i Options på Tools-menuen under Text Editor angive forskellige
Introduktion til .NET og Visual Studio
33
værdier. Mange tilretter f.eks. altid Tab-størrelsen og angiver, at der skal bruges
tabuleringer i stedet for mellemrum.
Figur 16. Indstillinger for kode-vinduet.
Det er også i dette vindue, man kan ændre font og farve på kode-vinduet, og mange
går meget op i, om man bruger de rigtige farver og fonte, så man anstrenger øjnene
så lidt som muligt. Nogle sværger til en lysegrøn baggrund med sort tekst, mens
andre har det fint med det farveskema, som installeres med Visual Studio.
Properties-vinduet
Properties-vinduet (egenskabsvinduet) befinder sig normalt nederst til højre, og her
kan man nemt tilrette egenskaber på eksempelvis kontroller.
Figur 17. Properties-vinduet.
Introduktion til .NET og Visual Studio
34
Den kontrol, man ønsker at arbejde med i vinduet, skal være markeret, men nogen
gange er det hurtigere at finde kontrollen på listen øverst i vinduet. Her kan man
også få et overblik over, hvilke kontroller (typer og navne) der findes på en side.
Det er også her, man nemt kan indsætte hændelsesorienteret kode relateret til den
valgte kontrol. Det kan ske ved at klikke på det lille lyn øverst i vinduet for at få en
liste over objektets hændelser, og efterfølgende angive et ønsket navn på en metode
(eller blot dobbeltklikke for at bruge et default navn).
Figur 18. Hændelser i Properties-vinduet.
Såfremt Properties-vinduet er blevet lukket, eller bare gemmer sig bag et andet, kan
det aktiveres ved at klikke F4 eller vælge det på View-menuen.
Fejlfinding
En af styrkerne i Visual Studio er alle de funktioner, der findes relateret til fejlfin-
ding (debugging). De fleste anvendes ved at placere et eller flere breakpoints i ko-
den. Når programmet når til et breakpoint holdes en pause i afviklingen, hvor man
kan få et overblik over objekter og variabler. Herefter kan afviklingen af applikatio-
nen genoptages – enten linje for linje, metode for metode eller helt forfra. At arbejde
sig frem i koden kaldes at ”steppe gennem koden”.
Et breakpoint sættes i koden på debug-menuen (Toggle Breakpoint), ved at trykke
F9 eller ved at klikke til venstre for kodelinjen.
Introduktion til .NET og Visual Studio
34
Den kontrol, man ønsker at arbejde med i vinduet, skal være markeret, men nogen
gange er det hurtigere at finde kontrollen på listen øverst i vinduet. Her kan man
også få et overblik over, hvilke kontroller (typer og navne) der findes på en side.
Det er også her, man nemt kan indsætte hændelsesorienteret kode relateret til den
valgte kontrol. Det kan ske ved at klikke på det lille lyn øverst i vinduet for at få en
liste over objektets hændelser, og efterfølgende angive et ønsket navn på en metode
(eller blot dobbeltklikke for at bruge et default navn).
Figur 18. Hændelser i Properties-vinduet.
Såfremt Properties-vinduet er blevet lukket, eller bare gemmer sig bag et andet, kan
det aktiveres ved at klikke F4 eller vælge det på View-menuen.
Fejlfinding
En af styrkerne i Visual Studio er alle de funktioner, der findes relateret til fejlfin-
ding (debugging). De fleste anvendes ved at placere et eller flere breakpoints i ko-
den. Når programmet når til et breakpoint holdes en pause i afviklingen, hvor man
kan få et overblik over objekter og variabler. Herefter kan afviklingen af applikatio-
nen genoptages – enten linje for linje, metode for metode eller helt forfra. At arbejde
sig frem i koden kaldes at ”steppe gennem koden”.
Et breakpoint sættes i koden på debug-menuen (Toggle Breakpoint), ved at trykke
F9 eller ved at klikke til venstre for kodelinjen.
Introduktion til .NET og Visual Studio
35
Figur 19. Et breakpoint sat på en linje.
På Debug-menuen kan man aktivere et meget brugbart vindue kaldet Breakpoints.
Figur 20. Breakpoints-vinduet.
Herfra kan man nemt få et overblik over alle breakpoints, aktivere og deaktivere
dem og navigere til et breakpoint.
Når afviklingen er stoppet – eksempelvis efter et breakpoint – kan man som nævnt
steppe gennem koden ved hjælp af funktioner, der findes på Debug-menuen.
Figur 21. Udsnit af Debug-menuen.
Man kan eksempelvis steppe ind i en metode med F11, hoppe over en metode med
F10 og hoppe ud af en metode med Shift+F11. Man kan også blot vælge at fortsætte
afviklingen (F5) eller stoppe afviklingen helt (Shift+F5). Ved at bruge de forskellige
Introduktion til .NET og Visual Studio
35
Figur 19. Et breakpoint sat på en linje.
På Debug-menuen kan man aktivere et meget brugbart vindue kaldet Breakpoints.
Figur 20. Breakpoints-vinduet.
Herfra kan man nemt få et overblik over alle breakpoints, aktivere og deaktivere
dem og navigere til et breakpoint.
Når afviklingen er stoppet – eksempelvis efter et breakpoint – kan man som nævnt
steppe gennem koden ved hjælp af funktioner, der findes på Debug-menuen.
Figur 21. Udsnit af Debug-menuen.
Man kan eksempelvis steppe ind i en metode med F11, hoppe over en metode med
F10 og hoppe ud af en metode med Shift+F11. Man kan også blot vælge at fortsætte
afviklingen (F5) eller stoppe afviklingen helt (Shift+F5). Ved at bruge de forskellige
Introduktion til .NET og Visual Studio
36
muligheder kan man altså arbejde sig gennem koden og samtidig følge med i aktuel-
le variabler.
Fejlfinding kræver, at koden kompileres med debug-instruktioner, og i ASP.NET
kan det gøres ved at tilrette konfigurationsfilen (web.config). Hvis man trykker F5
for at starte fejlfinding (se Debug-menuen) vil Visual Studio automatisk kontrollere,
om fejlfinding er slået til, og hvis det ikke er tilfældet, vil der blive vist en dialog-
boks.
Figur 22. Aktivering af fejlfinding.
Når afviklingen har nået et breaktpoint, og kontrollen er returneret til Visual Studio,
har man forskellige vinduer til rådighed. Der er eksempelvis både et Autos- og Lo-
cals-vindue, som giver et hurtigt overblik over variabler og objekter på det sted, hvor
afviklingen er sat på pause.
Figur 23. Autos-vinduet.
Ligeledes findes der et Call Stack-vindue, hvor man kan se, hvordan programekse-
kveringen er forløbet.
Mulighederne for fejlfinding er afhængig af, hvilken version af Visual Studio der
benyttes. De viste funktioner er som nævnt fra en Visual Studio 2010 Professional,
men de fleste er tilgængelige i Express-versionen også. I Visual Studio 2010 Ultima-
te er der en del flere (avancerede) funktioner.
Introduktion til .NET og Visual Studio
36
muligheder kan man altså arbejde sig gennem koden og samtidig følge med i aktuel-
le variabler.
Fejlfinding kræver, at koden kompileres med debug-instruktioner, og i ASP.NET
kan det gøres ved at tilrette konfigurationsfilen (web.config). Hvis man trykker F5
for at starte fejlfinding (se Debug-menuen) vil Visual Studio automatisk kontrollere,
om fejlfinding er slået til, og hvis det ikke er tilfældet, vil der blive vist en dialog-
boks.
Figur 22. Aktivering af fejlfinding.
Når afviklingen har nået et breaktpoint, og kontrollen er returneret til Visual Studio,
har man forskellige vinduer til rådighed. Der er eksempelvis både et Autos- og Lo-
cals-vindue, som giver et hurtigt overblik over variabler og objekter på det sted, hvor
afviklingen er sat på pause.
Figur 23. Autos-vinduet.
Ligeledes findes der et Call Stack-vindue, hvor man kan se, hvordan programekse-
kveringen er forløbet.
Mulighederne for fejlfinding er afhængig af, hvilken version af Visual Studio der
benyttes. De viste funktioner er som nævnt fra en Visual Studio 2010 Professional,
men de fleste er tilgængelige i Express-versionen også. I Visual Studio 2010 Ultima-
te er der en del flere (avancerede) funktioner.
Introduktion til .NET og Visual Studio
37
Visual Studio (især 2010) er skabt til at kunne udvides, og der findes mange
plug-ins/add-ins på nettet, som tilføjer ekstra funktionalitet. Det bedste over-
blik over disse add-ins findes på Visual Studio Gallery (kortlink.dk/72ks). Her
findes der både gratis og dyre add-ins inden for mange forskellige kategorier.
Af de bedre gratis add-ins, som jeg har erfaring med, kan nævnes DPack
(kortlink.dk/7k2w), som blandt andet gør det nemt at finde metoder i et stort
projekt, og Go To Definition (kortlink.dk/7k2x) der gør det muligt at springe
til en metode ved hjælp af ctrl+klik.
Eksempel på udvikling af et lille website
Det er nemmere at forstå, hvordan et værktøj som Visual Studio fungerer, hvis man
prøver det selv. Derfor lukkes dette kapitel med en gennemgang af, hvordan man
gennem Visual Studio 2010 (Professional) kan udvikle et simpelt website med en
enkel side, der viser aktuelle valutakurser. I eksemplet skal man ikke bekymre sig
om ukendte begreber eller uforståelig kode – det bliver dækket senere i bogen. Man
skal blot fokusere på, hvordan Visual Studio bliver brugt.
1. Start Visual Studio og opret et nyt website ved at vælge New på File-
menuen. Vælg det ønskede sprog, vælg ASP.NET Empty Web Site og angiv
en placering som eksempelvis c:\temp\valutasite.
2. Tilføj en ny side ved at højreklikke på c:\temp\valutasite i Solution Explo-
rer. Kald siden default.aspx og sørg for, at der er sat kryds i ”Place code in
separate file”.
Introduktion til .NET og Visual Studio
37
Visual Studio (især 2010) er skabt til at kunne udvides, og der findes mange
plug-ins/add-ins på nettet, som tilføjer ekstra funktionalitet. Det bedste over-
blik over disse add-ins findes på Visual Studio Gallery (kortlink.dk/72ks). Her
findes der både gratis og dyre add-ins inden for mange forskellige kategorier.
Af de bedre gratis add-ins, som jeg har erfaring med, kan nævnes DPack
(kortlink.dk/7k2w), som blandt andet gør det nemt at finde metoder i et stort
projekt, og Go To Definition (kortlink.dk/7k2x) der gør det muligt at springe
til en metode ved hjælp af ctrl+klik.
Eksempel på udvikling af et lille website
Det er nemmere at forstå, hvordan et værktøj som Visual Studio fungerer, hvis man
prøver det selv. Derfor lukkes dette kapitel med en gennemgang af, hvordan man
gennem Visual Studio 2010 (Professional) kan udvikle et simpelt website med en
enkel side, der viser aktuelle valutakurser. I eksemplet skal man ikke bekymre sig
om ukendte begreber eller uforståelig kode – det bliver dækket senere i bogen. Man
skal blot fokusere på, hvordan Visual Studio bliver brugt.
1. Start Visual Studio og opret et nyt website ved at vælge New på File-
menuen. Vælg det ønskede sprog, vælg ASP.NET Empty Web Site og angiv
en placering som eksempelvis c:\temp\valutasite.
2. Tilføj en ny side ved at højreklikke på c:\temp\valutasite i Solution Explo-
rer. Kald siden default.aspx og sørg for, at der er sat kryds i ”Place code in
separate file”.
Introduktion til .NET og Visual Studio
38
3. Klik på Design-fanen og træk fra værktøjskassen en tekstboks (TextBox), en
knap (Button) og en etiket (Label) ind på siden. Klik på knappen og ret
Text-egenskaben i Properties-vinduet til ”Find kurs”. Klik også på etiketten
og slet teksten i Text-egenskaben. Designet kan eksempelvis se således ud
(man kan binde kontrollerne ind i en tabel, hvis det ønskes – tabellen kan
indsættes fra Table-menuen).
4. Højreklik på c:\temp\valutasite og vælg Add new Item. Indsæt en ny klasse
(elementet Class) og kald den ValutaHelper. Visual Studio vil spørge, om
klassen skal placeres i App_Code mappen, hvilket blot accepteres. Tilføj
nedenstående kode til klassen. I klassen findes metoden FindKurs, som først
kontrollerer, om kurser allerede er hentet fra Nationalbanken. Hvis det ikke
er tilfældet, hentes kurser og gemmes i en time. Herefter findes og returne-
res kursen efter ISO-koden. Husk, at man ikke behøver koncentrere sig om
”ukendt” kode – vi kigger på kontekst og cache senere i bogen.
Introduktion til .NET og Visual Studio
38
3. Klik på Design-fanen og træk fra værktøjskassen en tekstboks (TextBox), en
knap (Button) og en etiket (Label) ind på siden. Klik på knappen og ret
Text-egenskaben i Properties-vinduet til ”Find kurs”. Klik også på etiketten
og slet teksten i Text-egenskaben. Designet kan eksempelvis se således ud
(man kan binde kontrollerne ind i en tabel, hvis det ønskes – tabellen kan
indsættes fra Table-menuen).
4. Højreklik på c:\temp\valutasite og vælg Add new Item. Indsæt en ny klasse
(elementet Class) og kald den ValutaHelper. Visual Studio vil spørge, om
klassen skal placeres i App_Code mappen, hvilket blot accepteres. Tilføj
nedenstående kode til klassen. I klassen findes metoden FindKurs, som først
kontrollerer, om kurser allerede er hentet fra Nationalbanken. Hvis det ikke
er tilfældet, hentes kurser og gemmes i en time. Herefter findes og returne-
res kursen efter ISO-koden. Husk, at man ikke behøver koncentrere sig om
”ukendt” kode – vi kigger på kontekst og cache senere i bogen.
Introduktion til .NET og Visual Studio
39
' ------------------------- VB -------------------------
Imports System
Imports System.Web
Imports System.Xml
Imports System.Web.Caching
Public Class ValutaHelper
Public Shared Function FindKurs(isoKode As String) As Double
Dim context As HttpContext = HttpContext.Current
Dim doc As XmlDocument
If context.Cache("kurser") Is Nothing Then
doc = New XmlDocument()
doc.Load("http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml")
context.Cache.Insert("kurser", doc, Nothing, DateTime.Now.AddHours(1),
Cache.NoSlidingExpiration)
Else
doc = DirectCast(context.Cache("kurser"), XmlDocument)
End If
Dim node As XmlNode = doc.DocumentElement.SelectSingleNode
("//currency[@code='" + isoKode + "']")
If node Is Nothing Then
Throw New ApplicationException("ISO koden " + isoKode + " findes ikke!")
End If
Dim kurs As Double
If Not Double.TryParse(node.Attributes("rate").InnerText.ToUpper(), kurs)
Then
Throw New ApplicationException("Kurs kan ikke konverteres!")
Else
Return kurs
End If
End Function
End Class
// ------------------------- C# -------------------------
using System;
Introduktion til .NET og Visual Studio
40
using System.Web;
using System.Xml;
using System.Web.Caching;
public class ValutaHelper
{
public static double FindKurs(string isoKode)
{
HttpContext context = HttpContext.Current;
XmlDocument doc;
if (context.Cache["kurser"] == null)
{
doc = new XmlDocument();
doc.Load(@"http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml");
context.Cache.Insert("kurser", doc, null, DateTime.Now.AddHours(1),
Cache.NoSlidingExpiration);
}
else
{
doc = (XmlDocument)context.Cache["kurser"];
}
XmlNode node = doc.DocumentElement.SelectSingleNode("//currency[@code='"
+ isoKode + "']");
if (node == null)
throw new ApplicationException("ISO koden " + isoKode + " findes ikke!");
double kurs;
if (!double.TryParse(node.Attributes["rate"].InnerText.ToUpper(), out
kurs))
throw new ApplicationException("Kurs kan ikke konverteres!");
else
return kurs;
}
}
Introduktion til .NET og Visual Studio
40
using System.Web;
using System.Xml;
using System.Web.Caching;
public class ValutaHelper
{
public static double FindKurs(string isoKode)
{
HttpContext context = HttpContext.Current;
XmlDocument doc;
if (context.Cache["kurser"] == null)
{
doc = new XmlDocument();
doc.Load(@"http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml");
context.Cache.Insert("kurser", doc, null, DateTime.Now.AddHours(1),
Cache.NoSlidingExpiration);
}
else
{
doc = (XmlDocument)context.Cache["kurser"];
}
XmlNode node = doc.DocumentElement.SelectSingleNode("//currency[@code='"
+ isoKode + "']");
if (node == null)
throw new ApplicationException("ISO koden " + isoKode + " findes ikke!");
double kurs;
if (!double.TryParse(node.Attributes["rate"].InnerText.ToUpper(), out
kurs))
throw new ApplicationException("Kurs kan ikke konverteres!");
else
return kurs;
}
}
Introduktion til .NET og Visual Studio
41
5. Klik på fanebladet med default.aspx, gå til Design og dobbeltklik på knap-
pen. Det bringer code-behind filen frem med en allerede udfyldt hændel-
sesmetode. Sørg for at den ser således ud:
' ------------------------- VB -------------------------
Protected Sub Button1_Click(sender As Object, e As EventArgs)
Try
Label1.Text = "Kursen er " & ValutaHelper.FindKurs(TextBox1.Text)
Catch ex As Exception
Label1.Text = ex.Message
End Try
End Sub
// ------------------------- C# -------------------------
protected void Button1_Click(object sender, EventArgs e)
{
try
{
Label1.Text = "Kursen er " + ValutaHelper.FindKurs(TextBox1.Text);
}
catch (Exception ex)
{
Label1.Text = ex.Message;
}
}
6. Klik nu på F5 (eller vælg Start debugging på Debug-menuen) og accepter, at
Visual Studio må tilrette web.config, således at fejlfinding aktiveres. Nu vil
Visual Studio starte den indbyggede webserver, åbne en browser og sørge
for, at denne anmoder om default-siden fra den nu startede webserver. Siden
kan nu afprøves.
Introduktion til .NET og Visual Studio
42
7. Funktionen FindKurs i ValutaHelper-klassen benytter Cache til at opbevare
kurser fra Nationalbanken i en time ad gangen, men det ville være rart at få
testet, om det nu også virker som forventet. Stop derfor Visual Studios web-
server ved at dobbeltklikke på det lille ikon ved siden af uret og stop serve-
ren. Det vil sørge for, at applikationen starter helt forfra.
8. Åbn ValutaHelper-klassen og sæt et breakpoint (F9) i starten af metoden.
Introduktion til .NET og Visual Studio
42
7. Funktionen FindKurs i ValutaHelper-klassen benytter Cache til at opbevare
kurser fra Nationalbanken i en time ad gangen, men det ville være rart at få
testet, om det nu også virker som forventet. Stop derfor Visual Studios web-
server ved at dobbeltklikke på det lille ikon ved siden af uret og stop serve-
ren. Det vil sørge for, at applikationen starter helt forfra.
8. Åbn ValutaHelper-klassen og sæt et breakpoint (F9) i starten af metoden.
Introduktion til .NET og Visual Studio
43
9. Klik på F5 igen, angiv en ISO-kode som eksempelvis USD og klik på knap-
pen. Når metoden FindKurs kaldes, vil Visual Studio sørge for at holde pau-
se i afviklingen og give fokus til koden. Bemærk at den linje, der skal til at
blive afviklet, er gul.
10. Nu kan man afvikle en linje ad gangen ved at klikke på F10 og se, at koden
ikke finder noget i cachen, hvorfor kurser hentes fra Nationalbanken, og
kursen findes og returneres. Prøv at klikke på F10, til afviklingen når til
slutningen af metoden og følg med i variablerne i Autos- eller Locals-
vinduet. I bunden af metoden klikkes der på F5 for at afslutte fejlfinding.
11. Prøv nu at skrive en anden ISO-kode – eksempelvis NOK – og klik på
knappen igen. Endnu engang overtager Visual Studio og stopper afviklingen
i starten af FindKurs-metoden. Klik på F10 nogle gange for at konstatere, at
kurser nu er i cache, hvorfor de ikke denne gang hentes fra Nationalbanken.
Klik på det røde breakpoint-ikon til venstre i koden for at fjerne det og klik
på F5 for at fortsætte afviklingen.
Det var et kort eksempel på, hvordan man kan bruge Visual Studio til udvikling og i
forbindelse med fejlfinding. Der er mange flere funktioner end gennemgået, men det
burde give et indtryk af, hvad der findes, og hvordan det overordnet fungerer.
Introduktion til .NET og Visual Studio
43
9. Klik på F5 igen, angiv en ISO-kode som eksempelvis USD og klik på knap-
pen. Når metoden FindKurs kaldes, vil Visual Studio sørge for at holde pau-
se i afviklingen og give fokus til koden. Bemærk at den linje, der skal til at
blive afviklet, er gul.
10. Nu kan man afvikle en linje ad gangen ved at klikke på F10 og se, at koden
ikke finder noget i cachen, hvorfor kurser hentes fra Nationalbanken, og
kursen findes og returneres. Prøv at klikke på F10, til afviklingen når til
slutningen af metoden og følg med i variablerne i Autos- eller Locals-
vinduet. I bunden af metoden klikkes der på F5 for at afslutte fejlfinding.
11. Prøv nu at skrive en anden ISO-kode – eksempelvis NOK – og klik på
knappen igen. Endnu engang overtager Visual Studio og stopper afviklingen
i starten af FindKurs-metoden. Klik på F10 nogle gange for at konstatere, at
kurser nu er i cache, hvorfor de ikke denne gang hentes fra Nationalbanken.
Klik på det røde breakpoint-ikon til venstre i koden for at fjerne det og klik
på F5 for at fortsætte afviklingen.
Det var et kort eksempel på, hvordan man kan bruge Visual Studio til udvikling og i
forbindelse med fejlfinding. Der er mange flere funktioner end gennemgået, men det
burde give et indtryk af, hvad der findes, og hvordan det overordnet fungerer.
Introduktion til .NET og Visual Studio
44
Kort fortalt
.NET består blandt andet af elementerne CLR (Common Language Runti-
me), som er selve hjertet i .NET, og BCL (Base Class Library) som indehol-
der mange klasser, der kan benyttes i forbindelse med udvikling.
Man kan udvikle mange forskellige typer applikationer i .NET – herunder
ASP.NET websites.
Man kan benytte mange forskellige sprog i forbindelse med udvikling, men
C# og VB.NET er de primære.
Visual Studio 2010 findes i en gratis version kaldet Express. Der findes en
version til udvikling af blandt andet Windows Forms og Klassebiblioteker
kaldet Visual Basic 2010 Express eller Visual C# 2010 Express afhængig af
sprog. Hvis man vil udvikle til web (ASP.NET), findes der en Visual Web
Developer 2010 Express (kan både arbejde i C# og VB.NET).
De større versioner af Visual Studio er Professional, Premium og Ultimate.
De fleste udviklere vil kunne nøjes med Professional-versionen.
Med Visual Studio følger også en SQL Server Express 2008, som det anbe-
fales at installere.
Af vigtige vinduer i forbindelse med ASP.NET-udvikling kan nævnes Tool-
box-, Source-, Design-, Solution og Properties-vinduerne.
Visual Studio har omfattende support for CSS (Cascading Style Sheets).
Markup-, Code-snippets og Intellisense kan spare meget tid i forbindelse
med udvikling.
Fejlfinding sker blandt andet ved at arbejde med breakpoints, som tvinger
afvikling af en applikation til pause, hvor variabler kan studeres. Afvikling
kan herefter påbegyndes igen én linje eller metode ad gangen.
Introduktion til .NET og Visual Studio
44
Kort fortalt
.NET består blandt andet af elementerne CLR (Common Language Runti-
me), som er selve hjertet i .NET, og BCL (Base Class Library) som indehol-
der mange klasser, der kan benyttes i forbindelse med udvikling.
Man kan udvikle mange forskellige typer applikationer i .NET – herunder
ASP.NET websites.
Man kan benytte mange forskellige sprog i forbindelse med udvikling, men
C# og VB.NET er de primære.
Visual Studio 2010 findes i en gratis version kaldet Express. Der findes en
version til udvikling af blandt andet Windows Forms og Klassebiblioteker
kaldet Visual Basic 2010 Express eller Visual C# 2010 Express afhængig af
sprog. Hvis man vil udvikle til web (ASP.NET), findes der en Visual Web
Developer 2010 Express (kan både arbejde i C# og VB.NET).
De større versioner af Visual Studio er Professional, Premium og Ultimate.
De fleste udviklere vil kunne nøjes med Professional-versionen.
Med Visual Studio følger også en SQL Server Express 2008, som det anbe-
fales at installere.
Af vigtige vinduer i forbindelse med ASP.NET-udvikling kan nævnes Tool-
box-, Source-, Design-, Solution og Properties-vinduerne.
Visual Studio har omfattende support for CSS (Cascading Style Sheets).
Markup-, Code-snippets og Intellisense kan spare meget tid i forbindelse
med udvikling.
Fejlfinding sker blandt andet ved at arbejde med breakpoints, som tvinger
afvikling af en applikation til pause, hvor variabler kan studeres. Afvikling
kan herefter påbegyndes igen én linje eller metode ad gangen.
Bogen om ASP.NET 4.0 Web Forms er for dig, der gerne vil lære at bruge Microsofts populære ASP.NET-teknologi til at udvikle websites, eller som mangler en god dansk opslagsbog om ASP.NET.
Bogen kommer hele vejen rundt i ASP.NET 4.0 Web Forms og er opdelt i følgende kapitler:
• Introduktion til .NET og Visual Studio• Grundlæggende webprogrammering• Grundlæggende ASP.NET-programmering• Serverkontroller• ASP.NET AJAX• Tilstand• Design• Avanceret udvikling og brug af kontroller• Data i ASP.NET• Navigering• Beskyttelse af sider• Fejlhåndtering og overvågning • Konfigurering og distribuering
Ud over gennemgang af teorien bag de forskellige komponenter i ASP.NET er bogen fyldt med gode eksempler (koden er vist både i C# og VB.NET), ligesom der er mange gode råd og henvisninger til ressourcer på nettet.
Bogen er skrevet af Michell Cronberg, som har mange års erfaring med ASP.NET – både som underviser, foredragsholder og konsulent. Han har tidligere udgivet flere bøger og hæfter om programmering.
Baseret på ASP.NET 4.0 Web Forms frigivet i 2010