ASP.NET Tutorial, Part 5 - Simple kontroller

Tags:    asp.net
Skrevet af Bruger #7741 @ 12.06.2005
I sidste lektion kiggede vi på hvordan formularer benyttes i ASP.NET, og i denne lektion kaster vi os over nogle af de mere simple kontroller.

Flere forskellige typer


Inden vi går i gang, er det dog vigtigt at være bevidst om, at der findes to forskellige typer af serverbaserede kontroller i ASP.NET:

  • ASP.NET-serverkontroller, som indeholder en stor funktionalitet og afvikles på serveren. Det er normalt disse man relaterer til ASP.NET, og det er da også dem vi koncentrerer os mest om i disse lektioner.

  • HTML-serverkontroller er en samling kontroller svarende til de kontroller man har adgang til i HTML. Der er dog den store forskel at HTML-serverkontroller afvikles på serveren, og dermed har logiske egenskaber og hændelser hvilket gør dem nemme at skrive kode til.



Begge typer kan benyttes i Web Matrix (se toolbox-vinduet) til visuel udvikling, men i denne lektion, og i efterfølgende lektioner medmindre andet tydeligt er angivet, vil der blive benyttet ASP.NET serverkontroller.


Figur 1 De forskellige typer af kontroller tilgængelige i Web Matrix

Vi kommer senere ind på hvornår man bør bruge HTML-serverkontroller i stedet for ASP.NET-serverkontroller.

Fælles egenskaber og hændelser


Alle kontroller har visse fælles egenskaber, hvilket i realiteten skyldes, at de i objektorienteret sammenhæng er nedarvet fra samme klasse. Nogle af disse fælles egenskaber er som følger:

[table][tr][td]Egenskab[/td][td]Beskrivelse[/td][/tr][tr][td]AccessKey[/td][td]Bestemmer hvilket bogstav der kan bruges som genvej til knappen sammen med Alt-knappen.[/td][/tr][tr][td]BackColor[/td][td]Bestemmer baggrundsfarven.[/td][/tr][tr][td]Enabled[/td][td]Bestemmer om kontrollen skal være tilgængelig.[/td][/tr][tr][td]Font-Name[/td][td]Navnet på fonten (eksempelvis Verdana).[/td][/tr][tr][td]Font-Size[/td][td]Størrelsen på fonten.[/td][/tr][tr][td]ForeColor[/td][td]Bestemmer forgrundsfarven (eksempelvis Red eller #00FF00)[/td][/tr][tr][td]Height[/td][td]Bestemmer højden.[/td][/tr][tr][td]ID[/td][td]Identificerer de enkelte kontroller, og sikrer blandt andet at det er muligt at tilgå kontroller gennem kode.[/td][/tr][tr][td]TabIndex[/td][td]Bestemmer hvilken rækkefølge der skal følges når man tabulerer sig rundt mellem kontrollerne.[/td][/tr][tr][td]ToolTip[/td][td]Bestemmer hvilken tekst (normalt en hjælpetekst) som skal "poppe op" ved siden af knappen når musen holdes stille over knappen et øjeblik.[/td][/tr][tr][td]Visible[/td][td]Bestemmer om kontrollen er synlig.[/td][/tr][tr][td]Width[/td][td]Bestemmer bredden på kontrollen.[/td][/tr][/table]

Disse egenskaber kan benyttes på alle kontroller, hvilket jo gør det noget nemmere at benytte de forskellige typer af kontroller fordi der er mindre at huske på. Skal man eksempelvis sætte en baggrundsfarve, er det egenskaben BackColor man skal have fat i ligegyldigt hvilken kontrol det drejer sig om.
Vi kommer løbende til at se eksempler på brug af de mange fælles egenskaber - både i denne og kommende lektioner.

Knap


Knap-kontrollen (Button) er en af de mest benyttede kontroller, og den findes som standard i tre variationer. En almindelig standard knap (Button), en knap vist som et link (LinkButton), og en knap vist som et billede (ImageButton). Alle tre kontroller vil som standard fremprovokere en postback når der bliver klikket på dem.
Knapperne kan alle findes i værktøjskassen i Web Matrix, men hvis du vil bruge dem manuelt, kan følgende (simple) syntaks benyttes:
Fold kodeboks ind/udKode 

I denne lektion kigger vi på standardknappen, og vender retur til de andre typer senere i forbindelse med kodeeksempler.

Standardknap


Ønsker man blot en ganske almindelig knap, vil man normalt benytte tre egenskaber: Egenskaben Text der bestemmer hvad der skal stå på selve knappen, og de to standardegenskaber ToolTip (lille vindue med hjælpetekst) og AccessKey (genvejstast).

Det er dog muligt at benytte alle standardegenskaberne som eksempelvis forgrunds- (Forecolor) og baggrundsfarve (Backcolor), størrelse (Width), eller om knappen skal være synlig (Visible) eller tilgængelig (Enabled).

Click-hændelsen, som logisk nok finder sted når der klikkes på knappen, har følgende syntaks:
Fold kodeboks ind/udKode 


Fold kodeboks ind/udKode 

Navnet på metoden skal, hvis man benytter Web Matrix eller selv skriver koden, være angivet i opmærkningen til knappen under egenskaben onclick:
Fold kodeboks ind/udKode 

Selve metoden kan enten skrives manuelt eller ved at dobbeltklikke på knappen i Web Matrix. Argumenterne til metoderne har sjældent betydning i denne sammenhæng, men fortæller noget om hvem der er afsender af hændelsen, og eventuelle argumenter. Vi vender senere tilbage til disse to argumenter, men indtil videre kan du blot ignorere dem.

Her er et kort eksempel på brug af en knap, som benytter de nævnte egenskaber tillige med egenskaben BackColor. Eksemplet viser ligeledes hvordan knappen kan tilgås via kode:

C#
Fold kodeboks ind/udKode 
VB.NET
Fold kodeboks ind/udKode 


Koden danner en side med en enkelt knap. Knappen har teksten "Klik på mig", og når man lader musen svæve over knappen, dukker teksten "Farveknap" op i et lille vindue. I stedet for at klikke på knappen kan man bruge genvejstasten Alt+F.

Metoden Button1_Click afvikles når der klikkes på knappen hvilket skyldes, at metodenavnet er angivet i opmærkningen i egenskaben onclick. I metoden bliver knappens baggrundsfarve sat til en værdi afhængig af tiden. Hvis det aktuelle sekund er et lige tal, bliver knappen rød, ellers bliver den hvid.

Du kan se flere eksempler på brug af en knap i de forrige lektioner.

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (12)

User
Bruger #5789 @ 14.06.05 08:26
En skam at lade dit store talent, som nævnt i toppen, gå til spilde på noget vi alle kan læse i et IDG hæfte, kom med noget mere spændende, i asp.net.
User
Bruger #2730 @ 14.06.05 09:17
Enig. Omend IDG hæftet ville være bedre, da der er forklaring til koden.
User
Bruger #6528 @ 15.06.05 17:05
Der vil jeg sige jeg er uenig. Nok kan et hæfte være lige så godt men jeg synes da det er gode begynder artikler. De bliver vel også mere interessante med tiden men man skal jo starte et sted
User
Bruger #2730 @ 16.06.05 16:01
Det jeg mener med at et hæfte ville være bedre, er at den kode der er skrevet her på siden ikke er forklaret. Hvis jeg er totalt nybegynder så ved jeg eks. ikke hvad DateTime.Now.Second % 2 betyder og det er det jeg mener et hæfte ville gøre bedre !
User
Bruger #1925 @ 21.06.05 22:26
jeg har læst alle artiklerne op til 5 og giver højeste karakter. jeg synes stoffet er godt forklaret og eksemplerne er gode.
User
Bruger #7784 @ 27.06.05 14:32
Det er lige meget hvor jeg kikker henne er det alt sammen det samme lort man ikke lære en skid af!.. Undskyld mit sprog men det er det samme på activedeveloper.dk udvikleren.dk og HTML.dk
User
Bruger #2730 @ 28.06.05 16:00
Enig... Synes det er imponerende at de samme 5 artikler på alle sites. Jeg gad godt vide hvordan man kan gøre det, når artiklerne på denne side SKAL være unikke? Når man vil oprette en artikel står der blandt andet dette: "Du skal selv have skrevet artiklen. Kopiering af artikler fra andre sites er STRENGT forbudt! ". Og jeg kan da se den samme artikel på andre sites! Når en artikel er oprettet på sitet er det vel i princippet Kasper(TSW) der har copyrighten til dem???
User
Bruger #1 @ 30.06.05 12:23
Utroligt så hadsk en stemning en omgang artikler kan skabe - det var da alligevel imponerende :). Artiklerne er tilføjet og godkendt af mig, men ikke skrevet af mig - derfor er der oprettet en profil med forfatterens navn der er brugt til det. Artiklerne er de samme fordi Microsoft har givet alle de danske communities lov til at bruge dem.

Skulle der være flere spørgsmål vil jeg bede jer om at skrive til mig eller oprette i forums. Det er synd for disse artikler at de er fulde af, for artiklerne, irrelevante kommentarer :). De er IKKE til øvede ASP.NET folk, men derimod totale nybegyndere - bare lige hvis nogen skulle være i tvivl :)
User
Bruger #2730 @ 01.07.05 09:06
Jeg synes stadig at artiklerne er elendige og ikke på højde med de andre artikler her på udvikleren. Jeg synes det lugter af at udviklerens integritet er blevet prostitueret for at kunne sætte et kendt navn på en simpel og ingen lunde lærerig artikel.
User
Bruger #1 @ 01.07.05 16:35
Brian, personligt synes jeg ikke at disse artikler fejler noget. Det er mit håb at de vil få langt flere udviklere interesseret i ASP.NET. Hvem forfatteren er kunne vitterligt ikke rage mig mindre :). Skulle en anden person, fx dig Brian - du skriver jo selv fremragende artikler, have lyst til at skrive en komplet ASP.NET begynder tutorial, så vil jeg da klart foretrække den, da den så er unik for Udvikleren.dk! Jeg føler i øvrigt på ingen måde at de er ringere end andre artikler her på sitet. Jeg vil gerne give dig ret i at der er nogen der er bedre, men sådan vil det jo næsten altid være :)

Jeg vil dog lige gentage, bare så vi har det helt på det rene: Det drejer sig IKKE om hvem der er forfatter af artiklerne. Den eneste grund til at der er de specielle bokse i toppen af disse artikler, med information om forfatteren, er at jeg har antaget at det har været et krav fra Michell af, da det er med der hvor artiklerne ellers er publiceret, samt i de originale versioner jeg har fået tilsendt :)
User
Bruger #2730 @ 01.07.05 17:58
Fair nok - end of discussion
User
Bruger #7603 @ 30.10.05 11:18
Fin artikel, men må godt være lidt forklaring omkting koden!?
Du skal være logget ind for at skrive en kommentar.
t