11. november 2005 - 20:02Der er
29 kommentarer og 1 løsning
Bestem hvilken mappe?
Hvis jeg vil finde ud af hvilken mappe/på hvilket niveau/hvor i contexten jeg befinder mig, hvad skal jeg så bruge? Jeg tænker på Request.ServerVariables(".....")
Jeg kunne godt tænke mig at finde ud af, når man befinder sig på et givent niveau:
Hvis jeg befinder mig i Undermappe 2 med tilørende undermapper, vil jeg gerne kunne bestemme det også. Det er lidt kryptisk at skulle forklare, og sikkert også lidt kringlet at skulle forstå, men jeg vil gerne kunne vedhæfte de samme værdier til en given ting, uanset om man befinder sig i Undermappe 2, Undermappe 2.2 eller Undermappe 3.1
Håber du forstår hvor jeg vil hen. Ellers så spørg :)
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Kan du huske spørgsmålet fra i går? Der er jo åbenlyse problemer med at bibeholde sessionen på tværs af subdomænerne. Derfor er jeg gået bort fra dem, og vil istedet for lægge dem i mapper på domænet.
Du kan jo i princippet bruge den sti som servervariables("PATH_INFO") returnerer og så bare checke om den starter med den sti som du vil vide om du befinder dig på, f.eks.
curPath = lcase(request.servervariables("PATH_INFO")) if left(curPath,20) = "/mappe1/undermappe1/" then ' så er du i undermappe 1 elseif left(curPath,20) = "/mappe1/undermappe2/" then ' så er du i undermappe 2 elseif left(curPath,20) = "/mappe1/undermappe3/" then ' så er du i undermappe 3 end if
Ser fornuftigt ud, men det eneste, der skal tjekkes på, er de mapper, der ligger på et givent niveau, så indholdet i alle underliggende mapper også kan styles på en bestemt måde.
De mapper, der ligger på det givne niveau (og indholdet i de tilhørende undermapper), skal altså styles på en bestemt måde.
For ikke at have 35435357 mapper på rodniveu, lægger jeg de sider, som er underlagt et medlemlogin, ind i mappen "members". Alt hvad der ligger i
/members/personal/ + samtlige underliggende sider til personal
- skal styles på en bestemt måde. Alt hvad der ligger i
/members/debate/ + samtlige underliggende sider
- skal styles på en bestemt måde etc.
Sorry, jeg fik kigget din kommentar fra 12/11-2005 11:36:16 ordentligt igennem, og det ser ud til at være det jeg ønsker. Vender lige tilbage :)
<% Dim CurrentPath CurrentPath = LCase(Request.Servervariables("PATH_INFO"))
If LCase(Left(CurrentPath,20)) = "/members/" Then strCSS = "style" ElseIf LCase(Left(CurrentPath,20)) = "/members/personal/" Then strCSS = "personal" End If %>
Men variablen bliver ikke overført? Jeg har tjekket scriptet, og det ser ud til at fungere: CurrentPath = /members/personal/default.asp, men jeg kan ikke udskrive strCSS.
Du skal tilpasse længden i left til den streng du checker på ("/members/" er jo ikke 20 tegn lang):
If LCase(Left(CurrentPath,9)) = "/members/" Then
Vær i øvrigt opmærksom på præcedens i dine check, dvs. lange stier skal måske checkes før de korte (hvis du vil have at dybe stier skal identificeres frem for knap så dybe stier).
Dvs. jeg kan ikke nøjes med at lave et tjek på /niveau1/niveau2/, men jeg skal lave et tjek for hvert niveau? Som for eksempel på /niveau1//niveau2/niveau3/niveau4/ osv?
Jeg prøver lige at lege lidt med den eksisterende Select Case, det må kunne flettes ind der?
Njaaah, den er lidt sværere fordi det du skal checke op mod ikke er konstant for alle betingelser, hvilket select case jo forventer. Men det er sikkert ikke umuligt (jeg kan bare ikke lige komme i tanke om en smart måde at bruge select case i denne sammenhæng).
Har du en idé til hvordan man nemmest angiver hvilket stylesheet, der skal anvendes?
Grunden til, at jeg vil lave det på denne måde, er fordi jeg benytter et "startdokument" og et slutdokument til samtlige sider, for at få det ens fra ende til anden. Det er også meget nemmere, hvis man skal foretage ændringer. Retter du styles, bredde etc. på de 2 sider, slår det jo igennem på samtlige sider. For det første er det lynhurtigt. For det andet kan jeg være sikker på, at jeg ikke glemmer nogen dokumenter, eftersom de alle benytter samme skabeloner. Og for det tredie er det uhyre tidsbesvarende.
I startdokumentet inkluderer jeg header.asp, som indeholder
skal personal.css benyttes på alt hvad der ligger i mappen personal, og samtlige undermapper, og undermapper til undermapperne. Kort sagt, ALT hvad der måtte ligge i mappen personal.
Jeg troede ikke det krævede så meget, jeg sætter point op.
Jeg har et forslag til hvordan du kan bruge select case alligevel. Det indebærer en lille ekstra funktion, som bare gør udtrykkene i case-sætningerne kortere og så gør det brug af en lidt omvendt (men lov - såvidt jeg ved) notation i select case-sætningen. Det kommer til at se nogenlunde således ud:
function startsWith(strCheck, strStart) startsWith = lcase(left(strCheck, len(strStart))) = lcase(strStart) end function
curPath = lcase(request.servervariables("PATH_INFO")) select case true case startsWith(curPath, "/mappe1/undermappe1/") ' så er du i undermappe 1
case startsWith(curPath, "/mappe1/undermappe2/") ' så er du i undermappe 2
case startsWith(curPath, "/mappe1/undermappe3/") ' så er du i undermappe 3
Ja, det var det der med præcedens jeg snakkede om tidligere (tror jeg nok :)). Det viser sig i praksis her, fordi du checker for /members/ inden du checker for /members/personal/ og den første matcher jo, så derfor bliver der ikke checket mere...
Jo, hvis det kunne lade sig gøre. Det er en god erstatning for tjekket på subdomænerne. Nu kan det differencieres på de contexten i stedet for på domænerne, som jeg ikke kan få overført sessionen imellem. Rigtig godt gået :)
Jo, hvis det kunne lade sig gøre. Det er en god erstatning for tjekket på subdomænerne. Nu kan det differencieres på de enkelte mapper på domænet, i stedet for subdomænerne, som jeg ikke kan få overført sessionen imellem. Rigtig godt gået - og jeg håber stadig du forstår hvad jeg mener :D
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.