-3
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
ErrorMessage på
RequiredFieldValidator-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
ControlToValidate på
RequiredFieldValidator-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:
// C#
void Beregn_Click(object sender, EventArgs e) {
}
' VB
Sub Beregn_Click(sender As Object, e As EventArgs)
End Sub
I metoden, som afvikles når der klikkes på knappen, kan koden til at beregne antallet af dage eksempelvis skrives som følger:
// C#
void Beregn_Click(object sender, EventArgs e) {
// Indhold i kontroller skal være korrekt
if(Page.IsValid){
// Konverter til DateTime
DateTime d1 = Convert.ToDateTime(dato1.Text);
DateTime d2 = Convert.ToDateTime(dato2.Text);
// Beregn
double antal = d2.Subtract(d1).TotalDays;
// Vis resultat
Resultat.Text = String.Format("Der er {0} dage mellem {1:D} og {2:D}",
antal, d1, d2);
}
}
' VB
Sub Beregn_Click(sender As Object, e As EventArgs)
' Indhold i kontroller skal være korrekt
If Page.IsValid Then
' Konverter til DateTime
Dim d1 As DateTime = Convert.ToDateTime(dato1.Text)
Dim d2 As DateTime = Convert.ToDateTime(dato2.Text)
' Beregn
Dim antal as Double = d2.Subtract(d1).TotalDays
' Vis Resultat
Resultat.Text = String.Format _
("Der er {0} dage mellem {1:D} og {2:D}", _
antal, d1, d2)
End If
End Sub
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)
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
jeg har læst alle artiklerne op til 5 og giver højeste karakter. jeg synes stoffet er godt forklaret og eksemplerne er gode.
gæt hvem der snart tykker på knappen PHP...
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
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!
Sorry, fandt ud af at det er samme forfatter.
Du skal være
logget ind for at skrive en kommentar.