Avatar billede Slettet bruger
24. januar 2004 - 14:10 Der er 18 kommentarer og
2 løsninger

server.execute og title

Hej

Jeg bruger

Option Explicit
Dim s
s = request.querystring("s")
server.execute("includes/header.asp")
if not s = "" then
    server.execute("includes/"&s&".asp")
else
    server.execute("includes/om.asp")
end if
server.execute("includes/footer.asp")

og kalder så alle mine sider med default.asp?s=denpågældende side

problemet er at jeg gerne vil ha' at <title> tagget, som er defineret i header.asp, bliver forskelligt fra side til side - er der nogen måde jeg kan gøre det på med den nuværende struktur?
Avatar billede medions Nybegynder
24. januar 2004 - 14:15 #1
Så siger du bare:

<title><%= Request.QueryString("s") %></title>

i de sider du includer!

//>Rune
Avatar billede Slettet bruger
24. januar 2004 - 14:17 #2
rune > Hmm, det jeg mener er ikke at hver sides navn skal være <title>, men at en variabel, som sættes lokalt i hver fil, bliver <title>
Avatar billede eagleeye Praktikant
24. januar 2004 - 14:19 #3
Så vidt jeg kan huske kan man ikke give en querystring i sådan her:
Server.Execute("includes/header.asp?s=" & s)

Så man må overføre det via session variablen:

s = request.querystring("s")
Session("s") = "abc"
Server.Execute("includes/header.asp")


og så i header.asp filen skriver:
<title><%= Session("s") %></title>
Avatar billede Slettet bruger
24. januar 2004 - 14:28 #4
er det ikke lidt hidsigt med en session ?
Avatar billede eagleeye Praktikant
24. januar 2004 - 14:35 #5
Jo måske..
men prøv i føste omgang dette at overføre via Querystring til header.asp filen:

Server.Execute("includes/header.asp?s=" & s)
Avatar billede eagleeye Praktikant
24. januar 2004 - 14:42 #6
Du kan bare skrive:

Server.Execute("includes/header.asp")


og i header.asp skrive det lader til den overføre GET data med execute:

<title><%= Request.QueryString("s") %></title>
Avatar billede Slettet bruger
24. januar 2004 - 15:08 #7
eagle > læs 24/01-2004 14:17:12 - det er ikke værdien af s der skal være <title>
Avatar billede eagleeye Praktikant
24. januar 2004 - 15:17 #8
Ok, det troede jeg :)
men <title> vel kun sættes i en fil.
Hvis titlen ikke kan bestemmes i header.asp filen men i den som kalder server.execute flere gange må man bruge Session variablen da Server.Execute ikke kan håndtere querystrings i filnavnet: xxx.asp?title=abc
man kan heller ikke share variable med server.Execute..

Altså:
title = "abc"
Server.Execute("header.asp")  'Så kan variablen title IKKE ses på header.asp siden


Hvis du bruger HTML include, sådan her kan variablen ses så det en mulighed, når det er et fast filnavn du includer:
<!--#include file="header.asp"-->
Avatar billede eagleeye Praktikant
24. januar 2004 - 15:18 #9
Altså dette virker:

title = "abc"
%><!--#include file="include/header.asp"--><%

og på siden header bruger:
<title><%=title%></title>
Avatar billede Slettet bruger
26. januar 2004 - 14:19 #10
eagle >

dette er min default.asp

<%
Option Explicit
Dim s
s = request.querystring("s")
%>
<!-- #include file="includes/header.asp"-->
<%
if not s = "" then
    server.execute("includes/"&s&".asp")
else
    server.execute("includes/om.asp")
end if
server.execute("includes/footer.asp")
%>

og hvis jeg så kalder default.asp?s=ny

og har defineret title som variabel i ny.asp sker der stadig ikke noget
Avatar billede eagleeye Praktikant
26. januar 2004 - 17:58 #11
Hvilken variabel?
Hvad hedder den og hvor sætte du den?
Avatar billede Slettet bruger
28. januar 2004 - 12:54 #12
jeg vil gerne (udfra den struktur som jeg viser 26/01-2004 14:19:47) have en lokal variabel "titel" i hver fil som jeg includer. Så dvs. i ny.asp er titel = "et eller andet", i om.asp er titel = "noget andet" etc... Kan det lade sig gøre?
Avatar billede eagleeye Praktikant
28. januar 2004 - 18:04 #13
Ja du kan godt hvade en lokal variable i hver fil, og sætte den lig et eller andet.
Du skal skriver i filen ny.asp:
titel = "et eller andet"

i filen om.asp:
titel = "noget andet"

eller misforstår jeg dig??
Avatar billede Slettet bruger
28. januar 2004 - 22:54 #14
pointen er at variablen titel er noget forskelligt i hver fil, og den skal bruges i header.asp til at udgøre <title><%=titel%></title>
Avatar billede eagleeye Praktikant
28. januar 2004 - 22:56 #15
Ok på den måde. Det kan man ikke. For når variblen title får en værdi i filen xxx.asp er header.asp includet og udført.
Avatar billede Slettet bruger
28. januar 2004 - 22:58 #16
det tænkte jeg nok - derfor dette spørgsmål :)

Men vil du så mene en session er næste skridt?
Avatar billede eagleeye Praktikant
28. januar 2004 - 23:04 #17
Det vil heller ikke virke. Man kan ikke føre data "tilbage i tiden" :). Når man først har udskrevet en variable vil det man har udskrevet ikke ændre fordi man ændre på variablen senere i koden.

Du må i filen som includer filerne (26/01-2004 14:19:47) ud fra s bestemme hvilen title som skal udskrive i header.asp før header.asp includes:


<%
Option Explicit
Dim s
s = request.querystring("s")
select case s
case "ny" title = "et eller andet"
case "om" title = "noget andet"
case else title = "default title"
end select
%>
<!-- #include file="includes/header.asp"-->
<%
if not s = "" then
    server.execute("includes/"&s&".asp")
..
..
Avatar billede Slettet bruger
28. januar 2004 - 23:33 #18
hmm, det har du jo ret i, men så har jeg et problem for ofte vil jeg ikke kende det på forhånd idet det i flere tilfælde vil være baseret på udtræk fra db.

F.eks. som her

<title>Eksperten | Programmering : Script : ASP : server.execute og title</title>
Avatar billede Slettet bruger
29. januar 2004 - 00:57 #19
fuck det - har ændret strukturen helt nu, således at hver fil kaldes seperat og title variablen sættes lokalt i hver fil inden header.asp inkluderes. Smid et svar - så kan I dele points for indsatsen :)
Avatar billede eagleeye Praktikant
29. januar 2004 - 00:59 #20
Ok, her et svar så ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester