ASP.NET Tutorial, Part 9 - Eksempel på brug af kontroller

Tags:    asp.net
Skrevet af Bruger #7741 @ 11.07.2005
Nu har vi set på de mest basale kontroller i ASP.NET, og det er på sin plads at slå en streg i sandet og opsummere brugen af kontrollerne med et praktisk eksempel.

Beregning af ydelse
Mange steder på nettet kan man finde sider med diverse simple finansielle beregninger. En af de mest benyttede er beregning af ydelse på et annuitetslån (lån med lige store ydelser i hele løbetiden).
Selve beregningen er en relativt kompliceret formel, men den er heldigvis at finde i .NET Frameworket som en almindelig metode. Metoden hedder PMT, og kan findes i namespacet Microsoft.VisualBasic.Financial (selv om den ligger i VisualBasic-namespacet, kan den også bruges i C#). Den har følgende syntaks:
Fold kodeboks ind/udKode 

Til metoden skal altså overføres Rate (nominel rente), NPer (antal terminer), PV (hovedstol), eventuelt FV (restgæld ved forfald - normalt kr. 0) og Due (fortæller om ydelser skal betales forud eller bagud). Yderligere er det en fordel at kunne angive hvor mange terminer der findes om året (1, 4 eller 12).
For at man kan foretage beregningen, skal disse data indsamles på en formular, og man kan eksempelvis benytte disse kontroller:

[table][tr][td]Argument[/td] [td]Kontrol[/td][/tr][tr][td]Rate[/td] [td]En tekstboks.[/td][/tr][tr][td]NPer[/td] [td]En tekstboks.[/td][/tr][tr][td]ATÅ[/td] [td]En DropDownList med elementerne 1, 4 og 12,
som angiver antal terminer pr. år.[/td][/tr][tr][td]PV[/td] [td]En tekstboks.[/td][/tr][tr][td]Due[/td] [td]To alternativknapper så der kan vælges forfald enten forud eller bagud.[/td][/tr][/table]

Yderligere skal der bruges en knap til at foretage beregningen, og en etiket til at vise resultatet.

Formularen


Uden at bruge energi på at få det til at se pænt ud (en tabel og lidt CSS ville gøre underværker) kan formularen på opmærkningsplan se således ud:

Fold kodeboks ind/udKode 


I koden benyttes følgende kontroller:
[table][tr][td]Kontrol[/td] [td]Navn[/td][/tr][tr][td]TextBox[/td] [td]Rate[/td][/tr][tr][td]TextBox[/td] [td]NPer[/td][/tr][tr][td]DropDownList[/td] [td]ATÅ[/td][/tr][tr][td]TextBox[/td] [td]PV[/td][/tr][tr][td]RadioButton[/td] [td]DueForud[/td][/tr][tr][td]RadioButton[/td] [td]DueBagud[/td][/tr][tr][td]Button[/td] [td]Beregn[/td][/tr][tr][td]Label[/td] [td]Resultat[/td][/tr][/table]

Bemærk, at de to alternativknapper er placeret i samme gruppe (Due) hvilket betyder, at der kun kan vælges en af kontrollerne, og da Bagud er valgt som standard i opmærkningen, vil der altid være en af kontrollerne som er valgt.
Du kan se hvordan formularen ser ud, i figur 1.


Figur 1 Formular til beregning af ydelse.

Beregningen


Så langt så godt - så mangler vi blot at foretage selve beregningen, og det kan ske direkte i knappens klik-hændelse (Beregn_OnClick). Her følger hele script-delen, som skal sættes ind i dokumentet før de tidligere viste opmærkninger:
Fold kodeboks ind/udKode 


Der er ikke så mange ben i selve beregningen - data fra formularen bliver blot typekonverteret, og slutteligt benyttet i kaldet til PMT-metoden. Når beregningen er foretaget skrives resultatet direkte til etiketten Resultat. Se figur 2 for et eksempel på hvordan beregningen fungerer i praksis.


Figur 2 Beregning af ydelse.

Hvis du benytter C#, skal du være opmærksom på, at du øverst på siden skal have linjen <%@ Assembly Name="microsoft.visualbasic, ……. %> med. Det skyldes, at C# ikke som standard har reference til det assembly som hedder Microsoft.VisualBasic i hvilken PMT-metoden findes. Hvis du bruger Visual Basic, behøver du ikke tilføje linjen.

Validering og fejlkontrol


Beregningen er nu færdig og spiller som den skal, men der mangler et par vigtige elementer.
For det første mangler der validering af det brugeren har indtastet, således at beregningen ikke fejler grundet forkerte parametre. Eksempelvis kan brugeren indtaste bogstaver i en tekstboks, som efterfølgende forsøges konverteret til en Double. Det vil naturligvis skabe en fejl, og det vil .NET meddele på en meget lidt brugervenlig måde.
Heldigvis har ASP.NET en meget effektiv måde at sikre validering på, og det kigger vi på i næste lektion.
Ud over selve valideringen af data er der også alle de andre "almindelige" fejl som kan opstå. Hvad hvis selve beregningen skaber en fejl som ikke direkte skyldes manglende validering - eksempelvis en beregning hvor ydelsen simpelthen ikke er stor nok til at dække renten. Eller web serveren af en eller anden grund ikke kan finde et konkret assembly.
Disse forhold bør der også laves fejlkontrol til at håndtere, og man bør derfor udvide koden med en eller flere Try/Catch sektioner (findes både i VB og C#). På den måde kan man sikre, at brugeren bliver orienteret om problemet på en pæn og brugervenlig måde.


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

Du skal være logget ind for at skrive en kommentar.
t