Includes

Tags:    asp
Skrevet af Bruger #1552 @ 05.02.2004
Indholdsoversigt
- #include file
- #include virtual
- Dynamisk includes - afhængig af eks. Request.Querystring
- Dynamisk includes - løsningen
- Layout med includes


Include er, som du sikkert allerede hár regnet ud, den kommando som skal bruges for at inkludere en fil i et ASP-dokument.


#include file
#include file-vognen er helt klart den nemmeste at springe på.
Fold kodeboks ind/udKode 

- og vupti; så har du inkluderet filen settings.asp fra mappen /includes.

Denne start var lige på og hårdt, og slet ikke så svær, vel?

#include file virker fremragende! Der er dog et irritationsmoment som man måske umiddelbart ikke lige tænker over.
Lad os antage at filerne til din hjemmeside er spredt ud over flere mapper på serveren, og du gerne vil have inkluderet filen includes/settings.asp;

- roden/default.asp
<!--#include file="includes/settings.asp"-->

- roden/generelt/info.asp
<!--#include file="../includes/settings.asp"-->

- roden/community/profiler/brugerprofil.asp
<!--#include file="../../includes/settings.asp"-->

- roden/kategori/sport/artikel/list_artikler.asp
<!--#include file="../../../includes/settings.asp"-->

Irritationsmomentet træder til såsnart du vil have flyttet den inkluderede fil. Du skal ind i samtlige dokumenter og gennemtænke hvor mange punktummmer og skråstreger der skal til før du har kontakt til settings.asp. Men bare rolig; løsningen hedder #include virtual.


#include virtual
Fold kodeboks ind/udKode 

Ved at bruge #include virtual kan du nu ligge filerne i de mapper som du har lyst til!
Når du angiver placeringen af inkluderingsfilen med #include virtual starter den med at læse fra roden på serveren. Det vil sige at hvis du laver din imidlertidige hjemmeside i mappen roden/projekter/minside, skal adressen i #include virtual sættes til /projekter/minside/includes/settings.asp.

Husk at starte med "/" når du bruger #include virtual.


Dynamisk includes - afhængig af eks. Request.Querystring
"For dælen mand - jeg må kunne lave dynamiske includes!"
Min kommentar: "Idéen er go' nok, men desværre ikke mulig!"

Fold kodeboks ind/udKode 
Idéen med at lave includes i IF-sætninger går heller ikke, da alle includes afvikles når siden indlæses.
Eksempel med IF-sætning
Fold kodeboks ind/udKode 

Hvis ovenstående eksempel køres, vil resultatet blive (uafhængig af Request.Querystring):
Fold kodeboks ind/udKode 


Dynamisk includes - løsningen
Prøv følgende kode:
Fold kodeboks ind/udKode 
Bid mærke i at ovenstående kommando ikke er den absolutte løsning for dynamisk includes, men dog det tætteste man kommer på det.

Efter en mindre research tillader jeg mig at skrive at Server.Execute kun virker i ASP 3.0 (IIS 5.0)


Layout med includes
Grænsen for hvad includes kan bruges til, er næsten kun din fantasi der sætter!

Hvad med at lave et layout bygget op omkring includes? - måske lyder det lidt skørt, men i bund og grund er det faktisk ret smart!

Lad os antage at din hjemmeside er bygget op omkring en højre- og en venstreside.

Hvorfor have kilometer lange koder side op og side ned, når det hele kan gemmes i en include-files?
Fold kodeboks ind/udKode 

Vi snitter vores layout op i 3 dele:
- content_header.asp
- content_top.asp
- content_bottom.asp

content_header.asp
Fold kodeboks ind/udKode 

content_top.asp
Fold kodeboks ind/udKode 


content_bottom.asp
Fold kodeboks ind/udKode 

Efter vi har delt vores layout op, skal vi også have det hele sat sammen igen; så det gør vi lige...

Resultat af opdeling af layout
Fold kodeboks ind/udKode 




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)

User
Bruger #123 @ 09.02.04 09:49
Udemærket artikel. Dog er den lovlig kort, og der er en direkte fejl. Du kan nemlig godt lave dynamiske includes med en if sætning. Resultatet bliver nøjagtigt som man forventer, fordi ganske vist bliver include filerne indsat før asp koden, men asp koden bestemmer enerådigt hvad der skal vises, og eftersom du angiver f.eks. querystring'en mode=1, så bliver der altså kun vist indholdet af indeholder_tekst_1.asp filen. Bortset fra denne fejl, er det en ganske god artikel med mange gode pointer. Du får lige et 3 tal fra mig.
User
Bruger #3509 @ 09.02.04 20:47
server.execute kan ikke overføre variabler osv.. de kan <!--#include
hvilket er en stor fordel, m.m. hensigten med includes er at overføre almindeligt design
User
Bruger #5062 @ 13.02.04 18:27
Fed artikel, men jeg syntes det du skrev med include virtual var lidt indviklet...
User
Bruger #3036 @ 16.02.04 00:22
Thomas Due - du får problemer med <!-- include file="<%=request("fil")%>"--> men ja if virker da, så der er en fejl i artiklen.
Evt kan man læse mere her: http://hinnerup.net/2002/experiments/include/
User
Bruger #4479 @ 16.03.04 14:06
Jeg lærte ikke rigtig noget, men det er jo også en nybegynder artikel:) Jeg kunne ikke lige forstå, at du sagde at alle tre filer ville blive inkuderet da jeg bruger den metode:) Men et 3-tal her fra!:)
User
Bruger #2835 @ 28.09.04 14:59
Det skal også lige nævnes at der er en ulempe ved includes. Hvis man ønsker at optimere sin hjemmeside til en høj placering på f.eks. google, kan det give problemer, da google ikke følger include linket og derfor ikke ser det indhold der ligger i den inkluderede fil.
User
Bruger #5789 @ 04.11.04 12:29
include file, har i vel i grunden ikke det store med asp at gøre... det hører vel til SSI(server side includes), hvilket dog stammer fra IIS og PWS, men også senere på apache og flere.... men der findes en del flere kommandoer i den sammenhæng, hvilke jeg syntes mangler omtale da de er ligeså gode at benytte til asp insidecode..

Her er lidt mere materiale:
apache : http://httpd.apache.org/docs/howto/ssi.html
IIS : http://www.html.dk/tutorials/ssi/lektion2.asp
User
Bruger #5787 @ 26.06.05 13:54
...det kan gøres bedre!
Du skal være logget ind for at skrive en kommentar.
t