/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Dynamisk inklude
Fra : Erik Ginnerskov


Dato : 30-11-05 18:41

Hej NG

Jeg sidder og arbejder med dynamisk include og har for så vidt fået det til
at virke - man kan på en rimelig kort side bladre frem og tilbage mellem
forskellige dele af en førhen temmelig lang side.

Jeg har lavet det med denne kode til at kalde de enkelde sideelementer:

<% Server.Execute(Request.Querystring("id") & ".inc") %>

Men der opstår et problem, hvis siden kaldes uden at definere et specifikt
delindhold. Hvordan kan jeg definere, at hvis intet indhold er defineret i
linket til siden, bliver id sat til første delelement?

Altså, <a href="sidenavn.asp?id=s1">Linktekst</a> virker fint.

Men <a href="sidenavn.asp">Linktekst</a> giver en fejlmeddelelse

Fejltype:
Serverobjekt, ASP 0228 (0x80004005)
Kaldet til Server.Execute mislykkedes under indlæsningen af siden.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



 
 
VagnT (30-11-2005)
Kommentar
Fra : VagnT


Dato : 30-11-05 22:32

> Jeg har lavet det med denne kode til at kalde de enkelde sideelementer:
>
> <% Server.Execute(Request.Querystring("id") & ".inc") %>
>
> Men der opstår et problem, hvis siden kaldes uden at definere et specifikt
> delindhold. Hvordan kan jeg definere, at hvis intet indhold er defineret i
> linket til siden, bliver id sat til første delelement?
>
> Altså, <a href="sidenavn.asp?id=s1">Linktekst</a> virker fint.
>
> Men <a href="sidenavn.asp">Linktekst</a> giver en fejlmeddelelse

Hej Erik,

Prøv følgende:

<%
side_ID = Request.Querystring("id")
if side_ID = "" Then
side_ID = "s1"
end if

mere kode

Server.Execute(side_ID & ".inc")
%>

Den plejer at virke

VagnT


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Erik Ginnerskov (30-11-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 30-11-05 23:26

VagnT wrote:

> Prøv følgende:
>
> <%
> side_ID = Request.Querystring("id")
> if side_ID = "" Then
> side_ID = "s1"
> end if
>
> Server.Execute(side_ID & ".inc")
> %>
>
> Den plejer at virke

Det gjorde det også denne gang. ;)
Takker.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Jens Gyldenkærne Cla~ (30-11-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 30-11-05 23:12

Erik Ginnerskov skrev:

> Jeg har lavet det med denne kode til at kalde de enkelde
> sideelementer:
>
> <% Server.Execute(Request.Querystring("id") & ".inc") %>

Brug aldrig Querystring-data uden at validere dem først. Du har
selv nævnt problemerne at håndtere en manglende querystring - men
der kan også være problemer hvis siden modtager en forkert værdi i
querystring.

Select Case er oplagt til at teste en querystringvariabel:


Dim id, filnavn
id = Request.Querystring("id")

Select Case id
   Case "1"
       filnavn = "1.inc"
   Case "2"
       filnavn = "2.inc"
   ...

   Case Else
       filnavn = "default.inc"
End Select

Server.Execute(filnavn)

En alternativ mulighed:


Select Case id
   Case "1", "2", "5", "9", "23"
       filnavn = id & ".inc"
   Case Else
       filnavn = "default.inc"
End Select


- og en mere:

' Start med et defaultnavn
filnavn = "default.inc"

' Test om id er numerisk
If isnumeric(id) Then
' Hvis ja, lav id til et heltal   
Dim numID
numID = Cint(id)
   ' Tjek om nummeret ligger i et givent interval
If numID > 0 AND numID < 99 Then
    filnavn = Cstr(numID) & ".inc"
   End If
End If
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Erik Ginnerskov (30-11-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 30-11-05 23:56

Jens Gyldenkærne Clausen wrote:

> Dim id, filnavn
> id = Request.Querystring("id")
>
> Select Case id
> Case "1"
> filnavn = "1.inc"
> Case "2"
> filnavn = "2.inc"
> ...
>
> Case Else
> filnavn = "default.inc"
> End Select
>
> Server.Execute(filnavn)

Testet, virker.

> En alternativ mulighed:
>
> Select Case id
> Case "1", "2", "5", "9", "23"
> filnavn = id & ".inc"
> Case Else
> filnavn = "default.inc"
> End Select

Testet, virker

> - og en mere:
>
> ' Start med et defaultnavn
> filnavn = "default.inc"
>
> ' Test om id er numerisk
> If isnumeric(id) Then
> ' Hvis ja, lav id til et heltal
> Dim numID
> numID = Cint(id)
> ' Tjek om nummeret ligger i et givent interval
> If numID > 0 AND numID < 99 Then
> filnavn = Cstr(numID) & ".inc"
> End If
> End If

Testet, virker - også selv om ID ikke er rent numerisk.
Takker.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste