6
Tags:
asp
Skrevet af
Bruger #5154
@ 05.02.2004
Sådan arbejder du med mange tilstande
Hvis du har overvejet hvordan man f.eks. laver "mange sider i én", som man tit ser, det kan se sådan ud i din adressebar:
http://www.adresse.dk/?side=forsiden
eller
http://www.adresse.dk/default.asp?side=links&subside=danske
Begge er reelt bare en række querystrings, som betegner hvilken information man vil have vist på siden.
Der kan være flere praktiske grunde til at bruge cases, i stedet for forskellige unikke sider:
* Det er lettere at danne et overblik over sidens samlede funktionalitet
* Du kan skjule din interne filstruktur (mere om det senere)
* Som eksemplet ovenfor viser kan man f.eks. have flere substrukturer på samme fysiske side.
lidt forhåndsviden
Før vi kan bruge cases er det nok rart at vide hvad de afløser rent programmeringsmæssigt:
Man kan sammenligne cases med en bunke if-elseif-end if sætninger:
<%
'her opretter vi et request, der "fanger" strengen fra URL'en
sidekald = request.querystring("side")
'her henter vi den første side
if sidekald = "side1" then
Response.write ("Dette er side 1")
'den næste
elseif sidekald = "side2" then
Response.write ("Dette er side 2")
'den side der skal vises hvis stringen ikke bliver brugt
else
Response.write ("Dette er forsiden")
end if
%>
Som du nok kan forestille dig, så vil ovenstående bliver ret kedeligt at holde styr på i længden, det er i hvertfald ikke specielt kønt at se på
Cases, benytter samme princip, men man har bestemt at en case allerede ved at den vil sammenligne de to stringe, for at lave et eksempel, så laver vi det samme som før, bare med cases:
<%
select case request.querystring("side")
case ("side1")
Response.write("Dette er side 1")
case ("side2")
Response.write("Dette er side 3")
case ("side3")
Response.write("Dette er side 3")
case else
Response.write("Dette er forsiden")
end select
%>
Måske kan du forestille dig at det her er praktisk, der er i hvertfald ikke så meget kode at holde styr på.
tip:En ting man skal ligge mærke til er at til forskel fra f.eks. Java, så kan du bruge tekststrenge som case, hvis du bruger en switch i Java så kan du kun bruge tal, men ellers er dette generelt for de fleste sprog.
tip:Ovenstående eksempel, er ren asp, men naturligvis kan du starte og lukke dine asp tags, som med andet kode, her er endnu et eksempel, hvor der er inkluderet nogle includes af forskellig art:
<%
select case request.querystring("side")
case ("side1") %>
<!--#include virtual="\\inc\\side1.asp"-->
<% case ("side2") %>
<!--#include file="inc\\side2.asp"-->
<% case ("side3") %>
Dette er side 3, som du kan se er det bare almindelig tekst :)
<% case else %>
Response.write("Dette er forsiden")
end select
%>
Bemærk dog at selvom du laver cases, så vil include filerne altid blive indsat før serveren kører asp scriptet, derfor vil du ikke få nogen ydelsesforbedring af ovenstående, men det er da mere læseligt
En sidste ting du skal være opmærksom på er at, selvom du godt kan have to cases der benytter samme querystring (f.eks. hvis du vil have en unik menu, og indholdsdel på siden) så skal den altid lukkes og åbnes korrekt, du kan ikke lade en case stå "åben" ved at glemme at afslutte den med "end select" så får du fejl.
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 (8)
Udemærket artikel. Den er dog noget kort i det.
Hej Thomas, det er jo ikke det mest avancerede emne i verden, men hvis du har forslag til tilføjelser så er du da mere end velkommen til at skrive dem her
Glimrende og dog simpel.....kan man mon bruge samme funktion i php ??
3 tal herfra...og plejer ellers kun at give 2
Det er en god artikel, selv om den er så kort. Det er godt, for lange artikler bliver kedelige i længden, men det var langt fra tilfældet her
Måske kunne det være fedt hvis du også beskæftigede dig med dynamisk inklusion, dvs. at querystringen peger på et filnavn (uden endelse) og scriptet så automatisk inkluderer den. Det er ihvertfald noget jeg bruger en hel del, når jeg koder PHP. Men et tretal alligevel
David, nu er artiklen om cases, og ikke dynamisk includes, jeg har vist set en artikel om includes et andet sted her på sitet, jeg mente at det var lidt ud over det scope, jeg havde sat for en nybegynder artikel at beskæftige sig med dynamisk includes... men det er da stof til en ny artikel
Der er en fejl... Else Case lukker <% %> tagget, og du åbner ikke et nyt til Response.Write
Kunne laves meget mere dynamisk, men mulighederne for dynamisk kode er dog bedre i PHP end ASP, når vi snakker include valg. via query-string.
Du skal være
logget ind for at skrive en kommentar.