/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
variabel i <--#include file...
Fra : MooreHojer


Dato : 24-07-05 22:51

Hej NG

Jeg har en side hvorpå der skal includeres en fil afhængigt af det
valgte sprog.

Jeg har forsøgt på to måder men ingen af dem kan jeg få til at virke.

Den første måde er denne her(koden sidder i head):

<--KODE START-->

<%
Dim Sprog
Sprog = "" & session("sprog") & ""

If Sprog = "" Then
session("sprog") = "dansk"
Sprog = "" & session("sprog") & ""
End If
%>

<!--#include file="include/<% Reponse.Write Sprog
%>/tekst_generel.asp"-->
<!--#include file="include/<% Reponse.Write Sprog
%>/tekst_forside.asp"-->

<--KODE SLUT-->

men den giver mig denne fejl:


Active Server Pages error 'ASP 0126'

Include file not found

/login/index.asp, line 26

The include file 'include/<% Reponse.Write Sprog %>/tekst_generel.asp'
was not found.




Den anden metode ser sådan her ud:

<--KODE START-->

<%
Dim Sprog
Sprog = "" & session("sprog") & ""

If Sprog = "" Then
session("sprog") = "dansk"
Sprog = "" & session("sprog") & ""
End If
%>

<%
If Sprog = "engelsk" Then
%>
<!--#include file="include/engelsk/tekst_generel.asp"-->
<!--#include file="include/engelsk/tekst_forside.asp"-->
<%
Else
%>
<!--#include file="include/dansk/tekst_generel.asp"-->
<!--#include file="include/dansk/tekst_forside.asp"-->
<%
End If
%>

<--KODE SLUT-->

Men af en eller anden grund så bliver alle fire filer includeret i
stedet for kun de to og derfor kommer den og brokker sig over at
variablerne bliver redefineret.


Er der nogen der har et forslag til hvordan jeg kan løse problemet?

På Forhånd Tak!

--
MooreHojer


 
 
Jens Gyldenkærne Cla~ (24-07-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 24-07-05 23:10

MooreHojer skrev:

> <!--#include file="include/<% Reponse.Write Sprog
> %>/tekst_generel.asp"-->

Den går ikke - includekommandoer køres før alle asp-kommandoer.



> Den anden metode ser sådan her ud:

[snip]

> Men af en eller anden grund så bliver alle fire filer
> includeret i stedet for kun de to

Samme forklaring. Håndteringen af en asp-side sker i to tempi.
Først tager SSI-parseren hånd om alle include-linjer og lignende
SSI-kode. Derefter tager asp-parseren fat på selve asp-koden.
Derfor kan du ikke bruge asp-kode til at påvirke SSI-kode.

Se siden her for en mulig udvej: <http://asp-faq.dk/article/?id=50>
--
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

MooreHojer (24-07-2005)
Kommentar
Fra : MooreHojer


Dato : 24-07-05 23:44

> Samme forklaring. Håndteringen af en asp-side sker i to tempi.
> Først tager SSI-parseren hånd om alle include-linjer og lignende
> SSI-kode. Derefter tager asp-parseren fat på selve asp-koden.
> Derfor kan du ikke bruge asp-kode til at påvirke SSI-kode.

Så blev jeg så meget klogere...


> 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
%>
<!-- #include file="Fil1.asp" -->
<%
Elseif Request.QueryString( "fil" ) = 2 Then
%>
<!-- #include file="Fil2.asp" -->
<%
End If
%>

Hvad er forskellen på hans betingelses-sætning og min?
Hvorfor vil hans virke når min ikke vil?
Vil hans kode ikke også resulterer i at begge filer includeres lige
gyldigt hvad?

--
MooreHojer


Jens Peter Rosenkvis~ (25-07-2005)
Kommentar
Fra : Jens Peter Rosenkvis~


Dato : 25-07-05 01:20

MooreHojer wrote:
>> 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
> %>
> <!-- #include file="Fil1.asp" -->
> <%
> Elseif Request.QueryString( "fil" ) = 2 Then
> %>
> <!-- #include file="Fil2.asp" -->
> <%
> End If
> %>
>
> Hvad er forskellen på hans betingelses-sætning og min?
> Hvorfor vil hans virke når min ikke vil?
> Vil hans kode ikke også resulterer i at begge filer includeres lige
> gyldigt hvad?
>

Jo, begge filer vil blive inkluderet, men du afvikler kun koden i en af dem.

Når du bruger 'include' skal du tænke det som om, at den blot tager
filen og klistrer den direkte ind i dit dokument og derefter afvikler
ASP-delen.

Jens Gyldenkærne Cla~ (25-07-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-07-05 08:07

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

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste