ASP.NET Tutorial, Part 3 - Et brugbart eksempel

Tags:    asp.net
Skrevet af Bruger #7741 @ 12.06.2005
Inden vi kaster os over teorien for alvor, er det måske på sin plads at vise et større og mere sammenhængende eksempel på en ASP.NET-side. Vi kommer ind på områder vi endnu ikke har snakket om, men frygt ikke. Vi kommer til det senere.

Eksemplet har til formål at vise flere ting. For det første hvor nemt det er at komme fra ingenting til en hel masse. For det andet hvor logisk brugen af kontroller og hændelsesorienteret programmering er (begge er begreber vi dykker ned i senere), og slutteligt hvordan flowet i en ASP.NET-applikation normalt er.

Opgaven


Opgaven er at skabe en enkelt side som kan benyttes til at beregne antallet af dage mellem to datoer. Der skal være mulighed for at indtaste de to datoer i to tekstbokse og efterfølgende klikke på en Beregn-knap. Resultatet af beregningen skal fremgå under kontrollerne.
For at gøre applikationen så brugbar som muligt skal der være validering på de to tekstbokse således, at der kun kan indtastes korrekte datoer. Såfremt der indtastes tegn som ikke kan konverteres til datoer, skal brugeren have en logisk fejlmeddelelse.

Løsningen


Løsningen er at skabe en såkaldt web form bestående af otte kontroller:

  • To tekstbokse.
  • Fire valideringskontroller, som skal bruges til at validere tegn indtastet i de to tekstbokse. En valideringskontrol skal bruges til at sikre at der er tastet en korrekt dato (kaldet en RangeValidator), og en kontrol til at sikre at tekstboksen ikke er tom (RequiredFieldValidator).
  • En knap.
  • En etiket til at indeholde resultatet af beregningerne.

Siden kan designes på mange måder, men det nemmeste er at benytte Web Matrix og trække en tekstboks, en RangeValidator- og en RequiredFieldValidator-kontrol til den øverste linje lige efter hinanden.

Tekstboksen omdøbes fra textbox1 til dato1 (marker kontrollen, og ret ID-egenskaben i Properties-ruden til højre i vinduet).

Egenskaben ErrorMessage i RangeValidator-kontrollen rettes til "Forkert dato", og Type-egenskaben rettes til Date (der skal testes på en dato). Egenskaben MinimumValue rettes til "1-1-1900" og MaximumValue til "1-1-2900", og slutteligt rettes egenskaben ControlToValidate til dato1 (man binder dermed valideringskontrollen til dato1-tekstboksen).

Egenskaben ErrorMessageRequiredFieldValidator-kontrollen sættes til "Felt skal udfyldes", og egenskaben ControlToValidate tilrettes ligeledes til dato1. Slutteligt rettes egenskaben Display fra Static til Dynamic i begge valideringskontroller (det sikrer at fejlmeddelelser står pænt - se herom i en senere lektion).

Samme tre kontroller placeres på næste linje (tryk på Enter for at skifte linje) med den forskel, at tekstboksen navngives dato2. Yderligere skal egenskaben ControlToValidateRequiredFieldValidator-kontrollen sættes til dato2.

På 3. linje placeres en knap (button), som navngives Beregn (via ID-egenskaben), Text-egenskaben rettes ligeledes til Beregn. På 4. linje placeres en etiket (label), som navngives Resultat, og Text-egenskaben slettes.

Nu skulle du gerne have en formular der ligner figur 1.


Figur 1 Design af ASP.NET-siden.

Test af formular


Selvom der ikke er skrevet nogen kode, kan du i Web Matrix prøve at afvikle formularen via Web Matrixs indbyggede web server ved at vælge Start på View-menuen, eller ved at trykke på F5. Koden oversættes af web serveren, som returnerer en side svarende til figur 2.


Figur 2 Siden afvikles gennem IE.

Prøv at trykke på Beregn-knappen - du skulle gerne blive mødt med en fejlmeddelelse ud for hvert felt der fortæller, at feltet skal udfyldes. Prøv så at skrive noget der ikke kan fortolkes som en dato, i felterne, og tryk Beregn igen. Fejlmeddelelsen vil nu være "Forkert dato".

Det er først når der indtastes korrekte datoer, at der ikke genereres en fejlmeddelelse. Der sker dog heller ikke mere - men det er fordi vi mangler at skrive koden bag Beregn-knappen.

Beregningen


Selve beregningen af antallet af dage skal ske når der klikkes på knappen Beregn, og der skal derfor oprettes en såkaldt hændelsesrutine. I Web Matrix gøres dette nemt ved at dobbeltklikke på Beregn-knappen, hvilket opretter en af følgende metoder afhængigt af det valgte sprog:
Fold kodeboks ind/udKode 

Fold kodeboks ind/udKode 

I metoden, som afvikles når der klikkes på knappen, kan koden til at beregne antallet af dage eksempelvis skrives som følger:
Fold kodeboks ind/udKode 

Fold kodeboks ind/udKode 


Antallet af dage beregnes ved hjælp af Subtract-metoden på DateTime-strukturen, og resultatet skrives til Resultat-etiketten.

Hele koden, som danner formularen, kan ses ved at vælge All-fanen i Web Matrix. Her kan ses de HTML- og kontrol-opmærkninger som danner selve siden, samt koden.

Konklusion


Det var et hurtigt eksempel på en ASP.NET-side udviklet med Web Matrix. I de næste lektioner dykker vi ned under overfladen for at se på hvordan tingene er skruet sammen.


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 (6)

User
Bruger #2730 @ 13.06.05 08:01
Jeg savner en gennemgang af den kode du skriver, synes det går lige lovligt hurtigt. Da denne artikel er rated som en nybegynder artikel synes jeg en god ting ville være at gennemgå den kode du skriver (de samme har været problemet i artikel nummer 2). Det du lægger op til i denne artikel har ikke noget med forståelse af programmeringen at gøre, men derimod hovedløs indtastning og det kan jeg ikke bruge til noget som helst. Det jeg har læst indtil videre er ikke imponerende (artikler 1, 2 og 3), de to første burde være slået sammen eller forbedret med en mere dybdegående forklaring og med forklaring til den kode der er blevet brugt, inden de blev lagt på nettet. For den totale nybegynder er denne artikel værdiløs, da den kun opfordrer til indtastning og ikke til forståelse af teknologien eller principperne !!! IMHO
User
Bruger #1925 @ 21.06.05 22:24
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 #8079 @ 10.09.05 14:37
gæt hvem der snart tykker på knappen PHP...
User
Bruger #1742 @ 03.04.06 00:55
Savner bestemt os meget noget gennemgang af kode...
Føler bare jeg blir bedt trykke hist og her og så copy paste lidt kode..
Håber at der er mere gennem gang i de næste
User
Bruger #10377 @ 30.04.07 15:24
Tsk, artiklen er jo nøjagtig den samme som på html.dk (http://www.html.dk/tutorials/aspnet/lektion2.asp) Artikel-Jury, hvad er det for noget? I skal da ikke godkende en artikel som er hugget et andet sted fra? Og til dig, Michell Cronberg, du er sgu da blot en taber. 1 herfra!
User
Bruger #10377 @ 02.05.07 14:43
Sorry, fandt ud af at det er samme forfatter.
Du skal være logget ind for at skrive en kommentar.
t