ASP ska köras i fil

ASP

31 svar · 376 visningar · startad av Erik Juhlin

Medlem sedan maj 200010 687 inlägg
Trådstart#1

Jag använder den här koden på några sidor för att inkludera filer:

<%
kategori = Request.QueryString("kategori") & "/"
If Request.QueryString("kategori") = "" Then
kategori = ""
End If
sida = Request.QueryString("sida")
If Request.QueryString("sida") = "" Then
sida = "default"
End If
Path = Server.MapPath(kategori & sida & ".inc")
Set FilSys = Server.CreateObject("Scripting.FileSystemObject")
If sida <> "" and FilSys.fileExists(Path) Then
Set Read = FilSys.OpenTextFile(Path)
Do While Not read.AtEndOfStream
Response.Write read.ReadLine & vbcrlf
Loop
Set Read = nothing
Else
%>Sidan &auml;r inte klar..<%
End If
Set FilSys = nothing
%>

Nu är det så att jag vill att ASP kod i .inc filen (har även testat att ha .asp) ska köras som vanligt. Finns det nåt sätt att göra det på?

Medlem sedan feb. 20013 023 inlägg
#2

Inte säker på jag förstått rätt, men om du includar en .asp-fil med aspkod inom
<% och %> så kommer den köras autmatiskt.

Medlem sedan feb. 20013 023 inlägg
#3

Nu är jag säker på att jag fattade fel. Ignorera mitt inlägg!

Medlem sedan dec. 19998 577 inlägg
#4

Allt innehåll i filerna du inkluderar på det sättet kommer att behandlas som ren data, och kommer inte att köras...

Skall du inkludera filer får du använde #include eller server.execute...

Medlem sedan maj 200010 687 inlägg
#5

Kan man slänga in #include eller server.execute i min kod?
#include, är det SSI du menar då eller? För det funkar ju inte i min kod i så fall..

Men server.execute, funkar det i min kod?

Medlem sedan maj 200010 687 inlägg
#6

Förresten, om jag har en funktion på sidan som den där filen ska inkluderas på, kan jag då "länka" till den i filen?

Medlem sedan dec. 19998 577 inlägg
#7

Varför kan du inte använda SSI? server.execute fungerar ungefär på samma sätt, bara några olikheter...

Vad har du i filen du skall inkludera?

Förresten, om jag har en funktion på sidan som den där filen ska inkluderas på, kan jag då "länka" till den i filen?

Om du har inkuderat filen så... eller missuppfattar jag frågan?

Medlem sedan maj 200010 687 inlägg
#8

Jag vill kunna bestämma vilken fil som ska inkluderas med hjälp av querystringen...

Medlem sedan dec. 19998 577 inlägg
#9

Ah, oki... då är Server.execute din metod... kräver dock ASP3.0...

Medlem sedan maj 200010 687 inlägg
#10

Hur kan man kolla om servern stöder det?

Medlem sedan dec. 19998 577 inlägg
#11

Testa:

Server.execute("din_sida.asp")

Funkar det så funkar det... :)

Medlem sedan maj 200010 687 inlägg
#12

Funkade bra, både lokalt och på webbhotellets server! :)

Hur ska jag då skriva koden?

Medlem sedan maj 200010 687 inlägg
#13

Grr.. Det där med funktioner funkade inte.
Vill ha det här på sidan där den andra filen ska inkluderas:

<%
Function font(face, size, color, text)
Response.write "<font face=""" & face & """ size=""" & size & """ color=""" & color & """>" & text & "</font>"
End Function
%>

Och sen i filen som inkluderas:

<%=font("Verdana, Helvetica, sans-serif", "2", "#FF0000", "Hej!")%>

Funkar inte.. :(
Inte alls bra, då blir jag tvungen att ha den översta koden i filen vilket jag vill slippa.. :l

Medlem sedan dec. 19998 577 inlägg
#14

nej det fungerar inte att "prata mellan" de två filerna med server.execute, dom körs separat, och resultatet av filen du exekverar förs in i orginalfilen.

Varför har du inte alla funktioner i en includefil som du inkluderar på de sidor du behöver?

Medlem sedan maj 200010 687 inlägg
#15

Jo, jag skulle kunna inkludera en fil med SSI i filen som redan inkluderats. Där kan jag då ha funktioner och liknande, och behöver man ändra något så behöver man bara göra det i en "funktion-fil". :)

Men min andra fråga, hur ska jag skriva koden? Vill ju ha in server.execute i koden jag skrev överst.. :)

Medlem sedan dec. 19998 577 inlägg
#16
<%
sida = Request.QueryString("sida")
If Request.QueryString("sida") = "" Then
sida = "default"
server.execute(sida&".inc")
End If
%>
Medlem sedan maj 200010 687 inlägg
#17

Då får man ju ett felmeddelande om filen inte finns. Det får man inte med koden längst upp.
Kan man inte ta koden längst upp och bara lägga in server.execute någonstans?

Medlem sedan dec. 19998 577 inlägg
#18

oj, :r

<%
sida = Request.QueryString("sida")
If Request.QueryString("sida") = "" Then
sida = "default"
End If
server.execute(sida&".inc")
%>

Du måste ha dokumentet som du ropar efter också... annars skriker den till...

Vad fick du för felmeddelande?

Medlem sedan maj 200010 687 inlägg
#19

Det felet såg jag innan. Men det jag menar är att jag vill att om inte filen finns så ska jag själv kunna skriva en text. Så är det i koden jag har nu (den längst upp)..

Medlem sedan juni 200032 967 inlägg
#20

man kan ju göra en fuling...

<%
on error resume next
sida = Request.QueryString("sida")
If Request.QueryString("sida") = "" Then
sida = "default"
server.execute(sida&".inc")
if err.number <> 0 then response.write "filen finns ju inte, din apa!"
End If
%>

eller så kan man använda din kod från originalinlägget för att kolla med fso först om filen finns, gör den det så, .execute.

mvh,

278 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
144 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
144 ms — ändringar (db)