webForumDet fria alternativet

<!-- #include file="inst/<% =strFargTema %>.asp" --> funkade visst inte...

ASP

12 svar · 418 visningar · startad av Oputres

Medlem sedan feb. 2004333 inlägg
Frågan#1

Allå!

Försökte mig på nedanståend men gick på bet. Skall man inte kunna göra enligt nedan? Användaren kan välja mellan två färgteman; blått (color_blue) och grönt (color_green). Dessa färgteman ligger som color_blue/green.asp i underliggande inst-mapp. Jag vill stämma av i databasen vilket färgtema de valt och sedan ladda det schemat med includefilen men får följande fel:
Feltyp:
Active Server Pages, ASP 0126 (0x80004005)
Include-filen 'inst/<% =strFargTema %>.asp' kunde inte hittas.
/public_html/medlemssidor/default.asp, line 29

Set RSFargTema = Connect.Execute("Select FargTema From AnvDb Where AnvId = '" & AnvId & "';")

If Not RSFargTema.EOF Then
  strFargTema = RSFargTema
Else
  strFargTema = "color_blue" 'Standard
End If
%>

<!-- #include file="inst/<% =strFargTema %>.asp" -->

Tillåt mig gissa:

  1. Det går inte att köra asp-kod i en includesats.
  2. Det är något fjantigt enkelt fel som jag inte ser.
Medlem sedan mars 20023 561 inlägg
#2

Provat?

strFargTema = RSFargTema("FargTema")
Medlem sedan maj 200591 inlägg
#3

Alla includesatser körs före asp-koden körs, därför går det inte att lägga in filnamnet dynamiskt på det sättet.

Medlem sedan mars 20023 561 inlägg
#4

Prova med Server.Execute(strFargTema & ".asp")

Medlem sedan feb. 2004333 inlägg
#5

Pinsamt. Det var ju alternativ två som tyvärr var rätt. :r

Löste det så här:

If Not RSFargTema.EOF Then
  Select Case(RSFargTema("FargTema"))
  Case "color_blue"%><!-- #include file="inst/color_blue.asp" -->
  <% Case "color_green" %><!-- #include file="inst/color_green.asp" -->
  <% End Select
Else
  <!-- #include file="inst/color_blue.asp" -->
End If
Medlem sedan mars 20023 561 inlägg
#6

Men det är ju inte en speciellt snygg lösning..
Jag skulle gjort så här istället:

If Not RsFargTema.EOF Then
     Server.Execute("inst/" & RSFargTema("FargTema") & ".asp")
Else
     Server.Execute("inst/color_blue.asp")
End If
Medlem sedan feb. 2004333 inlägg
#7

Jag provade att köra med Server.Execute men det fungerade inte. Den verkar inte ladda in filerna. När jag kollar på HTML-koden genom klienten finns inga färgkoder. Jag provade att skriva ut RSFargTema("FargTema") och där står mycket riktigt color_blue.

Jag får köra på fulvarianten så länge ;)

Medlem sedan maj 200591 inlägg
#8

Med tanke på att det handlar om färgteman så tycker jag helt klart att du ska skippa alla hittills föreslagna lösningar och istället satsa på att använda olika css-filer.

Medlem sedan nov. 20017 144 inlägg
#9

Håller med föregående talare.
Eftersom att när du includerar filer enligt din modell så kommer alla tre att laddas in på sidan även fast du bara utnyttjar en.
Om du använder server.execute så kan man bl.a. inte utnyttja variabler från den exekverande filen på sidan alltså är även det ett dåligt förslag. Men en dynamisk CSS-fil går allderles utmärkt.

Dim RSFargTema
RSFargTema = "color_blue"

If Not RSFargTema.EOF Then

	Select Case(RSFargTema("FargTema"))
  		Case "color_blue" : RSFargTema = "color_blue"
		Case "color_green" : RSFargTema = "color_green"
                Case "color_red" : RSFargTema = "color_red"
	End Select

End If

Response.Write "<link rel=""stylesheet"" type=""text/css"" href="""& RSFargTema &".css"" />"

Eller varför inte:

Dim RSFargTema
RSFargTema = "color_blue"

If Not RSFargTema.EOF Then RSFargTema = RSFargTema("FargTema"))

Response.Write "<link rel=""stylesheet"" type=""text/css"" href="""& RSFargTema &".css"" />"

:)

Medlem sedan feb. 2004333 inlägg
#10

Intressant. Nu är dock inte Css något jag är en höjdare på. Dessa färgteman består av enkla rader av formatet:
BgColor = "#F9F9F9" och anropas sedan i aspsidan genom
<Body bgcolor="<% =BgColor %>">

Hur löser man något liknande med ditt förslag?

Medlem sedan jan. 2003438 inlägg
#11

Om jag nu förstår dig rätt så använder du olika css till olika "sidor" färger.

Så ditt huvud dokument bör vara fri från samtlig css. så bodyn sätts endast till:

<body>

och i css sätts en bakgrund:

body 
{ background-color: #F9F9F9; }

Å då skall Herr T´s kod funka alldeles utmärkt enligt dina önskemål.

Medlem sedan feb. 2004333 inlägg
#12

Det funkar :D

Ett problem uppstod dock med en annan grej. Jag har att en speciell tabell, eller snarare en speciell <tr> skall vara i en separat färg. Jag provade en liknande variant som till bodyn men då blev alla tabeller av denna färg. Kan man specificera att det bara skall vara den tabellen?

Medlem sedan jan. 2003438 inlägg
#13

Bra att det funkar.

För att få bäst hjälp så är det bättre att posta css frågorna i HTML, XHTML & CSS forumet.

Men vi skall se, det finns två sätt att lösa det antingen med class eller id.

Class använder man om vill använda samma förändring på flera <tr>, medan id funkar så att det endast gäller den första.

i aspsidan

<tr class='speciell'>

eller med id:
<tr id='speciell'>

Skall då skrivas i css på detta viset.

[b]class[/b]

tr.speciell
{ background-color: black; }

[b]id[/b]

tr#speciell
{ background-color: black; }

Vi befinner som på @nders tid och jag reserverar mig för eventuella felskrivningar :)

271 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)