[ASP] Server.Execute : Functions

Pagina: 1
Acties:

  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
Ik heb 'template files' op mijn forum die ongeveer werken als die in phpbb.

Nu wil ik toevoegen dat je ook asp functies kunt aanroepen binnen de template.
Die functies moeten in de map "forum/templates/{templatenaam}/template_functions.asp" komen te staan.
Op het moment dat ik de template helemaal heb gemaakt tot een echte pagina, op de if-else statements na moet hij de functies uitvoeren die er zo : '{%functienaam(params)%}' uitzien.
Het probleem is dat ik niet die functies kan aanroepen omdat ze uiteraard niet ge-include zijn.

Als ik wil includen moet dit uiteraard met server.execute aangezien de gewone SSI niet volstaan omdat daar geen variabelen in kunnen zitten.

Dit wil allleen niet werken (ff pseudocode-achtig):
Visual Basic:
1
2
3
4
5
6
7
8
9
10
'Main pagina
server.execute("templates/" & mijntemplate & "/template_functions.asp")

test()

-------------------------------------------
'template_functions.asp
public function test()
  response.write("test")
end function


Ook iets dergelijks als dit wil niet werken.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
'Main pagina

functie_naam = "test()"
server.execute("templates/" & mijntemplate & "/template_functions.asp")

-------------------------------------------
'template_functions.asp

eval(functienaam)

public function test()
  response.write("test")
end function


het probleem in het kort:
Uitvoeren van functies in een file dmv server.execute aangeroepen.

Is er geen manier om dit wel voor elkaar te krijgen?

  • purge
  • Registratie: November 2000
  • Niet online
Je kan idd geen functies aanroepen welke in een .asp bestand staan wanneer je 'server.execute' gebruikt. De enige manier is om een 'functions.asp' bestand met include te koppelen. Wat in jouw voorbeeld niet gaat werken omdat dit niet dynamisch kan.

Gezien de naam van het, te includen, bestand zou dat moeten fungeren als template en als function bestand? Misschien handig om dit te splitsen.

' Main pagina
ASP:
1
2
3
4
5
<%
...
Server.Execute("templates/"& mijntemplates &"/template.asp")
...
%>


' Template.asp
ASP:
1
2
3
4
5
6
<!-- #include file="functions.asp" -->
<%
...
Response.Write ( test() )
...
%>


' functions.asp
ASP:
1
2
3
4
5
6
7
<%
...
public function test()
  test = "test"
end function
...
%>


Dit zou een werkende situatie moeten geven. In bovenstaand voorbeeld heb ik de function test() iets herschreven zodat deze ook een waarde terug geeft. Wil je de 'response.write' in de functions.asp kan dat ook maar dan zou ik het sub commando gebruiken in tegenstelling tot een function.

Verder hoop ik dat bovenstaande schets een beetje in de situatie past.
Voor meer informatie over het server.execute commando : http://www.devguru.com/Te...ckref/server_execute.html