Först vill jag bara säga att jag vet att Server.Execute funkar, men jag gillar inte den.
Jag har sökt lite och märkt att flera har löst samma problem som mig genom att köra Server.Execute och sen infoga alla variablar i varje sida, eller nåt liknande.
Eller så har dem kört, Om str = hej Then include hej.asp, men det funkar inte för mig för att jag har för många sidor.
Nu till mitt problem:
Jag vill inkludera sidor beroende på en viss sträng.
Exempel (detta funkar inte, men jag visar bara för att illustrera)
<!-- #include file="page<%=sträng%>.asp" -->
Jag hade tänkt göra en funktion som öppnar sidan och sen Execute:ar innehållet.
Ungefär Så:
getText = Function getFileText("page" & sträng & ".asp")
Execute(getText)
Men hur ska jag hämta innehållet i filen?
Ska jag köra med FileSystemObject eller ska jag göra samma sak som man gör när man hämtar text från externa sidor?
Så nu, vad ska jag göra? Ska jag köra med min lösning eller ska jag leta efter nåt annat, eller vad f*n ska jag göra?
Om du nu måste göra på det sättet så är FSO att rekommendera för att öppna filerna.
Får man fråga varför du inte gillar Server.Execute? Det du försöker göra är ju samma sak som Server.Execute gör, fast på ett sämre sätt.
Jo, jag vet... men jag har en funktionsfil som är inkluderad i en default.asp
sen har jag en sub fil som är inkluderad i default.asp. Denna inkludering vill jag göra i sub filen. Det lät kanske svårt... men det ser ut så här:
Du måste använda #include om du vill ha tillgång till kod, funktioner / subrutiner, i filen du inkluderar. Både din hemmasnickrade metod med Exec() och server.execute exekverar innehållet i filen, och du har inte endast tillgång till resultatet av exekveringen.
Om du har många filer som ska inkluderas hit och dit, så bör du nog tänka om din struktur.
Jag har ingen aning, för jag vet inte vad du vill göra eller vad du har i dina "många" filer.
Men det kan passa bra att du gör en funktion enl. ditt förslag i första inlägget, där du hämtar innehållet i vald fil med FSO, och exekverar med Execute.
Kom ihåg att du bara får ha ASP-kod i de filer du exekverar på detta sätt dock...
Function getFileContent(filePath)
Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
Set fileObject = fileSystemObject.OpenTextFile(Server.MapPath(filePath))
getFileContent fileObject.ReadAll
End Function
Execute getFileContent("hej.asp")
PS. Bästa sättet att öppna en fil... inte include alltså
Jag är lite osäker på prestandan, jag brukar akta mig för att göra på dylikt vis. Jag skulle tro att det är att föredra att skriva om koden så att man kan använda metoden Server.Execute(), om man har möjligheten.