MooreHojer skrev:
>> Se siden her for en mulig udvej:
>> <
http://asp-faq.dk/article/?id=50>
>
> Han foreslår følgende kode:
>
> <%
> if Request.QueryString( "fil" ) = 1 Then
Prøv at læse hele artiklen - der er en bedre metode angivet i
bunden af artiklen (Server.Execute).
> Hvad er forskellen på hans betingelses-sætning og min?
Ingen.
> Hvorfor vil hans virke når min ikke vil?
Din side fejler fordi du erklærer samme variable flere gange. Man
skal hele tiden holde sig klart at include-gymnastikken altid
foregår før asp-gymnastikken. Include-sætningerne er en hjælp til
den der laver et site, fordi man kan bruge den samme kode på mange
sider. Men for asp-parseren er der altid kun én side der behandles
- den side man får ved at kopiere alle includefiler ind i det
aktuelle dokument.
Skriver man som i eksemplet:
<% if Request.QueryString( "fil" ) = 1 Then %>
<!-- #include file="Fil1.asp" -->
<% Elseif Request.QueryString( "fil" ) = 2 Then %>
<!-- #include file="Fil2.asp" -->
<% End If %>
- svarer det i asp-sammenhæng helt til at skrive:
<% if Request.QueryString( "fil" ) = 1 Then %>
[hele indholdet af Fil1.asp her]
<% Elseif Request.QueryString( "fil" ) = 2 Then %>
[hele indholdet af Fil2.asp her]
<% End If %>
Derfor får du fejl hvis du erklærer en variabel både i Fil1 og
Fil2. Man kan evt. lave en særlig includefil hvor alle
variabelerklæringer placeres, men generelt er ovenstående form for
dynamisk inkludering noget man bør undgå. De datamængder som asp-
parseren skal håndtere, kan hurtigt blive meget store hvis man
inkluderer fx 10 filer og kun skal bruge 1 af dem.
Kig hellere på Server.Execute-metoden.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html