bogen om asp.net 4.0 web forms - amazon web...

46
BOGEN OM ASP.NET 4.0 WEB FORMS ASP.NET UDVIKLING MED C# OG VB.NET MICHELL CRONBERG

Upload: others

Post on 12-Jun-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

BOGEN OM

ASP.NET 4.0WEB FORMSASP.NET UDVIKLING MED C# OG VB.NET

MICHELL CRONBERG

Bogen om ASP.NET 4.0 Web Forms

ASP.NET udvikling med C# og VB.NET

Michell Cronberg

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