Toon posts:

[asp] Placeholder in template vervangen....

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor school ben ik bezig met het bouwen van een CMS in ASP. Dit doe ik met behulp van 'templates'.

Deze templates bevatten eigelijk de HTML code en dus het hele design van de uiteinderlijke website. Dit alles aangevuld met wat placeholders (zoals <NAVIGATIE> en <MAIN>) welke ik later dus wil vervangen door de uiteindelijke dynamische content.

Nou loop ik alleen tegen een probleem aan. De volgende code gebruik ik op moment:

index.asp (de variabele tmplfile is uiteraard gevuld met het juiste pad en file)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!--#include file="navigatie.asp"--> 

<% 
    dim fs, f, InitialString, RegularExpressionObject, ReplacedString 
     
    Set fs=Server.CreateObject("Scripting.FileSystemObject") 
    Set f=fs.OpenTextFile(Server.MapPath(tmplfile), 1) 

    InitialString = f.ReadAll 

    Set RegularExpressionObject = New RegExp 

    With RegularExpressionObject 
    .Pattern = "<NAVIGATIE>" 
    .IgnoreCase = True 
    .Global = True 
    End With 

    ReplacedString = RegularExpressionObject.Replace(InitialString, "123" & nav() & "456") 

    Response.Write ReplacedString 

    Set RegularExpressionObject = nothing 
    f.Close 
     
    Set f=Nothing 
    Set fs=Nothing 
%>


navigatie.asp:
code:
1
2
3
4
5
6
7
8
9
10
11
<% 
    public function nav() 
%> 
    <table width="200" border="0" cellspacing="5" cellpadding="5"> 
          <tr> 
        <td align="center" class="menu_header">[Dynamische content hier]</td> 
          </tr>
        </table> 
<% 
    End function 
%>


Opzich werkt dit goed, alles wordt getoont, echter op de verkeerde plaats. Zoals je ziet zou de uitvoer van navigatie.asp tussen 123 en 456 moeten komen te staan, dit gebeurt echter niet. De uitvoer van navigatie.asp komt bovenaan het html document te staan, waardoor het design dus niet meer klopt, het gekke is, dat 123 en 456 wel op de goede plek gezet wordt (ditzelfde gebeurt overigens wanneer ik gebruik maak van de functie Replace())

Kan iemand mij uitleggen hoe dit komt en hoe ik dit kan oplossen (eventueel met een andere methode)? Bedankt alvast.

  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Het is toch logisch dat die tabel bovenaan de pagina komt te staan, daar include je hem toch? Je moet die tabel in een asp variabele zetten zodat hij niet direct in de pagina komt te staan. En die variabele zet je dan als returnwaarde van de functie Nav() :)

Verwijderd

Topicstarter
André schreef op dinsdag 10 mei 2005 @ 12:05:
Het is toch logisch dat die tabel bovenaan de pagina komt te staan, daar include je hem toch? Je moet die tabel in een asp variabele zetten zodat hij niet direct in de pagina komt te staan. En die variabele zet je dan als returnwaarde van de functie Nav() :)
Vreemd, het maakt namelijk niets uit waar ik hem include ookal doe ik dat helemaal onderaan de file dan nog print hij alle informatie bovenaan de html file.

Nou ben ik ook nog niet zo bevlogen met ASP hoor, maar nou leek het mij logisch dat die functie navigatie pas uitgevoerd wordt (en dus de content dan pas retourneert) op de plek waar ik hem neer zet en niet eerder. Schijnbaar dus niet, das jammer.

Nou las ik dus ook ergens dat er geen functie bestaat in ASP waarmee je hele lappen html code oid in een variabele kunt zetten, das ook jammer.

Maar er moet toch wel een manier bestaan lijkt mij waarmee iets dergelijks wel kan, anders zou dit in mijn ogen een serieuze tekortkoming zijn van de ASP taal.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:07

gorgi_19

Kruimeltjes zijn weer op :9

Nou las ik dus ook ergens dat er geen functie bestaat in ASP waarmee je hele lappen html code oid in een variabele kunt zetten, das ook jammer.
Inlezen mbv FSO?
Maar er moet toch wel een manier bestaan lijkt mij waarmee iets dergelijks wel kan, anders zou dit in mijn ogen een serieuze tekortkoming zijn van de ASP taal.
Hoezo? VBScript is een scripting taal, geen compiled taal. Het wordt per regel uitgevoerd.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ZjieB
  • Registratie: Juli 2002
  • Laatst online: 31-10-2025
Als je je navigatie.asp zo opstelt werkt het wel.

ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
<% 
Function nav()
    strTemp = "<table width=""200"" border=""0"" cellspacing=""5"" cellpadding=""5"">" & vbCrLf
    strTemp = strTemp & "<tr>" & vbCrLf
    strTemp = strTemp & "<td align=""center"" class=""menu_header"">[Dynamische content hier]</td>" & vbCrLf 
    strTemp = strTemp & "</tr>" & vbCrLf
    strTemp = strTemp & "</table>" & vbCrLf
    nav = strTemp
End Function 
%>

Verwijderd

Topicstarter
Het File System Object? Als je iets dynamisch wilt maken lijkt me dat niet de handigste manier.

Nee, ik bedoel in perl doe je gewoon dit:
code:
1
2
3
4
$info = qq~ blablal hier een lap html code die niet 

geescaped hoeft te worden, zonder geklooj met quotes, witregels ed. zijn geen probleem 
~;

In PHP dit:
code:
1
2
3
$info = <<<EOD 
 bladibla  lap html code hier, zonder fratsen net als in perl
EOD;

Na zover ik weet kan het in asp alleen zo (nogal omslachtig als je een lap code van 250+ regels hebt)
code:
1
2
3
info = "html.... quotes enzo mogen niet letterlijk geschreven worden en moeten worden " & _ 
       "  gescaped. " & _
       " En hier gaat het verder blablabla enz enz."

Kan dit niet makkelijker?
[...]

Hoezo? VBScript is een scripting taal, geen compiled taal. Het wordt per regel uitgevoerd.
Dat weet ik. Toch vind ik het een tekortkoming als iets dergelijks niet kan.

[ Voor 4% gewijzigd door Verwijderd op 10-05-2005 13:28 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 11:55

mulder

ik spuug op het trottoir

Het File System Object? Als je iets dynamisch wilt maken lijkt me dat niet de handigste manier
Je leest de template in een vervangt de parameters? Net zo dynamisch alleen iets minder smerig dan die HTML/VBscrpt switch die je gebruikt.
Dat weet ik. Toch vind ik het een tekortkoming als iets dergelijks niet kan.
Welcome to the club. Ik ben ook blij als ASP dood en begraven is.
;)

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Don Facundo schreef op dinsdag 10 mei 2005 @ 13:50:
[...]

Je leest de template in een vervangt de parameters? Net zo dynamisch alleen iets minder smerig dan die HTML/VBscrpt switch die je gebruikt.
mja oke. Het design zit ook in een extern filetje, die lees ik ook met FSO in en dan probeer ik die placeholders te vervangen voor bijvoorbeeld het navigatie menu. Dit menu is nou eenmaal dynamisch en wordt opgebouwd dmv een database (in het voorbeeld nog niet, maar dat komt nog) dus het lijkt me niet handig om dat ook nog is in een extern filetje te proppen, ik wil dat menu gewoon on the fly generen.

Deze methodiek werkt in perl trouwens wel zeer goed. Ik ben er zodoende ook aan gekomen, dit script wat ik maak is eigelijk een letterlijke vertaling van een cms welke ik in perl geschreven heb (voor prive doeleinden) toevallig moet ik er nou een schrijven voor school alleen dat MOET perse in ASP. Nou ben ik een redelijk grote fan van de perl taal en zie dan ook de tekortkomingen van ASP.

Ik leg het maar naast me neer dan maar op een 'omslachtige' manier, als het niet anders is.

In ieder geval zeer bedankt en wellicht tot binnenkort :+ dit zal niet het eerst probleem zijn wat optreed denk ik ... :P

Wanneer er nog mensen zijn die suggesties of tips hebben dan kunnen ze die altijd hier posten ik zal het topic in de gaten houden :)

Nogmaals Bedankt!

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Je haalt een paar zaken door elkaar. ASP is geen taal! Jij gebruikt vbscript om je ASP pagina's te scripten, maar je zou even goed j(ava)script kunnen gebruiken.
En als ik me niet vergis, is er ook een perlscript interpreter beschikbaar voor ASP. Misschien dat je daarmee wat meer mogelijkheden hebt. Zeker aangezien het meer in je kennisgebied ligt. Ik heb overigens geen ervaring met perlscript, dus heb geen idee hoe je het aan de praat moet krijgen. Maar google moet je ongetwijfeld verder kunnen helpen.

Ik geef je overigens gelijk dat vbscript een achterlijk taaltje is in vergelijk met de vele andere mogelijkheden die er op dit moment zijn. Maar vergeet niet dat ASP flink verouderd is.

Today's subliminal thought is:


Verwijderd

Topicstarter
Annie schreef op dinsdag 10 mei 2005 @ 14:59:
En als ik me niet vergis, is er ook een perlscript interpreter beschikbaar voor ASP. Misschien dat je daarmee wat meer mogelijkheden hebt. Zeker aangezien het meer in je kennisgebied ligt. Ik heb overigens geen ervaring met perlscript, dus heb geen idee hoe je het aan de praat moet krijgen. Maar google moet je ongetwijfeld verder kunnen helpen.
Dat zou inderdaad een uitkomst zijn (dan zou ik zelfs mijn huidige scripts al kunnen gebruiken) helaas is dit echter niet mogelijk. We moeten de website ontwikkelen op een server van school (waarop we geen admin rechten oid hebben). Op deze server is PerlScript niet geinstalleerd. Daarnaast weten ze bij ons op school waarschijnlijk niet eens dat PerlScript uberhaupt tot de mogelijkheden behoort (het houd bij VBScript wel op denk ik, laat staan dat ze het anders zouden snappen)

Ik vraag me dan ook ten zeerste af, waarom er ons een 'achterhaalde' script taal geleerd word (en dat op HBO!), terwijl PHP of ASP.NET bijvoorbeeld veel relevanter geweest zou zijn net als dat we nu Delphi krijgen (ipv Java ofzo). Rare boel die scholen magoed, het zal ze wel ontbreken aan kennis.

Ik doe het wel op de moeilijke manier, dan krijg ik in ieder geval geen gezeik met die leraren met een smoes als, dit was niet de bedoeling.

Bedankt in ieder geval _/-\o_
Pagina: 1