/ 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
At udsrive en variabel
Fra : Anarko


Dato : 18-11-04 19:48

Hej

Når jeg skal indsætte (altså udskrive) en variabel fra mit VBScript -
som normalt befinder sig i toppen af dokumentet - et eller andet sted på
min html-side, gør jeg det på følgende måde: <% Response.Write variabel %>

Nogle gange ser jeg at folk bare skriver <%= variabel %>, hvilket jo er
en del kortere. I hvilke situationer, kan man bruge dette, og er det en
fuldt lovlig/standardiseret ting at gøre?

Mvh. Kristian


(Jeg havde svært ved at finde svar via Google, da man ikke kan søge på
"<%="...

 
 
Thomas Møller Nexø (18-11-2004)
Kommentar
Fra : Thomas Møller Nexø


Dato : 18-11-04 19:56

> Nogle gange ser jeg at folk bare skriver <%= variabel %>, hvilket jo er
> en del kortere. I hvilke situationer, kan man bruge dette, og er det en
> fuldt lovlig/standardiseret ting at gøre?

Ja det skulle jeg mene. Bruger det i hvert fald selv og det virker


--
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

Christian Kragh (18-11-2004)
Kommentar
Fra : Christian Kragh


Dato : 18-11-04 19:58

> Nogle gange ser jeg at folk bare skriver <%= variabel %>, hvilket jo er
> en del kortere. I hvilke situationer, kan man bruge dette, og er det en
> fuldt lovlig/standardiseret ting at gøre?

<%= %> betyder det samme som <% response.write %> og man skal derefter
indsætte en variabel eller en "felt" som skal udskrives til brugeren.

Hvis man vil lave en side som indsætter tiden og datoen nu i sit HTML
dokument kan man gøre det på følgende måde:

<% response.write now() %>
eller
<%= now() %>

Det betyder det samme og giver samme resultat.

Når jeg selv skal "få" resultater fra et database opslag ud så brugeren kan
se det laver jeg en lykke. Få information om at lave lykker i ASP
Tutorialsne på www.HTML.dk.

I denne lykke udskriver jeg værdierne sådan her:

<div><%= rs("DatabaseFelt") %></div>

Altså giver rs("DatabaseFelt") værdien fra min database og bliver udskrevet
af <%= %>

Christian

--
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

Ukendt (18-11-2004)
Kommentar
Fra : Ukendt


Dato : 18-11-04 20:04


"Anarko" <kristian.d@ofir.dk> wrote in message
news:419cee66$0$217$edfadb0f@dread12.news.tele.dk...
> Hej
>
> Når jeg skal indsætte (altså udskrive) en variabel fra mit VBScript -
> som normalt befinder sig i toppen af dokumentet - et eller andet sted på
> min html-side, gør jeg det på følgende måde: <% Response.Write variabel %>
>
> Nogle gange ser jeg at folk bare skriver <%= variabel %>, hvilket jo er
> en del kortere. I hvilke situationer, kan man bruge dette, og er det en
> fuldt lovlig/standardiseret ting at gøre?
Der skal fortolkes mere af serveren, når de korte udgaver benyttes...
Brug altid den lange udgave...
Bjarne



Anarko (18-11-2004)
Kommentar
Fra : Anarko


Dato : 18-11-04 20:29

bsn wrote:

> "Anarko" <kristian.d@ofir.dk> wrote in message
> news:419cee66$0$217$edfadb0f@dread12.news.tele.dk...
>
>>Hej
>>
>>Når jeg skal indsætte (altså udskrive) en variabel fra mit VBScript -
>>som normalt befinder sig i toppen af dokumentet - et eller andet sted på
>>min html-side, gør jeg det på følgende måde: <% Response.Write variabel %>
>>
>>Nogle gange ser jeg at folk bare skriver <%= variabel %>, hvilket jo er
>>en del kortere. I hvilke situationer, kan man bruge dette, og er det en
>>fuldt lovlig/standardiseret ting at gøre?
>
> Der skal fortolkes mere af serveren, når de korte udgaver benyttes...
> Brug altid den lange udgave...
> Bjarne
>
>


Lidt forskellige holdninger.

Men jeg takker.

terje (18-11-2004)
Kommentar
Fra : terje


Dato : 18-11-04 20:47

Anarko wrote:

> Lidt forskellige holdninger.
>
> Men jeg takker.

Response.Write brukes når du befinner deg inne i en blokk med ASP-kode,
mens <%=variabel%> setter du inn i en blokk med html kode.

terje

Jens Gyldenkærne Cla~ (18-11-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-11-04 23:04

bsn skrev:

> Der skal fortolkes mere af serveren, når de korte udgaver
> benyttes...

Er det noget du har referencer til?

Jeg har hørt det før om forskellen på at bruge Request("navn") og
fx Request.Querystring("navn"), eller om forskellen på rs("data")
og rs.Fields("data").Value - og der kan det måske give mening.

For request-objektet uden parameter, kan enhver streng findes i
såvel querystring som form eller params-samlingen - her mener jeg
bestemt at der er grund til at kvalificere hvilken samling man vil
hente data fra.

Men med postsæt er det yderst sjældent at der skal læses fra andre
samlinger end Fields - så umiddelbart tror jeg ikke gevinsten ved
eksplicit at angive samlingen her er specielt stor.

Og endelig kan jeg slet ikke se hvorfor der skulle være forskel i
tilfældet med response.write - i modsætning til de andre eksempler
er der ingen alternative muligheder som parseren kan lede
(forgæves) blandt.
--
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

terje (19-11-2004)
Kommentar
Fra : terje


Dato : 19-11-04 09:43

Jens Gyldenkærne Clausen wrote:

> Jeg har hørt det før om forskellen på at bruge Request("navn") og
> fx Request.Querystring("navn"), eller om forskellen på rs("data")
> og rs.Fields("data").Value - og der kan det måske give mening.
>
> For request-objektet uden parameter, kan enhver streng findes i
> såvel querystring som form eller params-samlingen - her mener jeg
> bestemt at der er grund til at kvalificere hvilken samling man vil
> hente data fra.

Enig. Hvis man kun skriver Request("Email") så må ASP lete i 5
collections: ClientCertificate Collection, Cookies Collection, Form
Collection, QueryString Collection og ServerVariables Collection. Hvis
f. eks. både Form og QueryString begge inneholder en variabel med samme
navn (ex: "Email"), så finner ASP kun den første. Dette må nødvendigvis
ta lengre tid enn om man spesifiserer hvilken collection man vil bruke.
Dessuten er det uansett dårlig "coding practice" å være så unøyaktig.

> Men med postsæt er det yderst sjældent at der skal læses fra andre
> samlinger end Fields - så umiddelbart tror jeg ikke gevinsten ved
> eksplicit at angive samlingen her er specielt stor.

Kanskje ikke, men ja, jeg har sett det anbefalt av folk som påstår å ha
testet dette.
En annen variant er forholdet mellom rs(1) og rs("Email"). Også her
mener man at den første er raskest og dermed anbefales brukt.

> Og endelig kan jeg slet ikke se hvorfor der skulle være forskel i
> tilfældet med response.write - i modsætning til de andre eksempler
> er der ingen alternative muligheder som parseren kan lede
> (forgæves) blandt.

Enig.

terje

Jens Gyldenkærne Cla~ (19-11-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-11-04 10:45

terje skrev:

[rs("feltnavn") vs. rs.Fields("feltnavn").Value]

> Kanskje ikke, men ja, jeg har sett det anbefalt av folk som påstår å ha
> testet dette.

Jeg kan ikke finde nogen specifikke anbefalinger i den retning.
På siden "25+ ASP Tips to Improve Performance and Style" på msdn:
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnasp/html/asptips.asp>
- kan man se at de bruger rs.Fields("feltnavn") (- men altså ikke
..Value), men det er ikke et af de 28 råd om performance.

Med hensyn til at optimere datahentning fra et postsæt, er der vist
langt mere at hente ved at bruge GetRows:
<http://www.learnasp.com/learn/whygetrows.asp>


> En annen variant er forholdet mellom rs(1) og rs("Email"). Også her
> mener man at den første er raskest og dermed anbefales brukt.

Her tror jeg bestemt du har ret. Parseren skal formentlig finde data som
en position i et postarray - og den position skal den slå op hvis man
bruger rs("navn") mens den kan læses og bruges direkte når man bruger
rs(0). Til gengæld bliver koden langt mindre læselig når man bruger
indeksværdier - det er en væsentlig og negativ sideeffekt.

Jeg bruger gerne indeksværdier hvis jeg skal læse data fra et postsæt
hvor der kun er et enkelt felt - for eksempel en optælling:

   sql = "SELECT COUNT(*) FROM tabel WHERE id = 42"
   set rs = conn.execute (sql)
   Response.write rs(0)

(her slipper jeg også for at bekymre mig om hvilket feltnavn databasen
vælger at sætte på Count-rækken)

--
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

terje (19-11-2004)
Kommentar
Fra : terje


Dato : 19-11-04 12:41

Jens Gyldenkærne Clausen wrote:

Q: rs("feltnavn") raskere enn rs.Fields("feltnavn").Value?

> Jeg kan ikke finde nogen specifikke anbefalinger i den retning.

Ikke jeg heller. Jeg mistet alle mine gamle bokmerker m.m. grunnet et
lite *uhell* for et års tid siden
Men jeg vet jeg har lest dette anbefalt.

> Med hensyn til at optimere datahentning fra et postsæt, er der vist
> langt mere at hente ved at bruge GetRows:
> <http://www.learnasp.com/learn/whygetrows.asp>

Både GetRows og GetString er superraskt sammenlignet med å printe ut
recordset verdiene i en loop, det er nok "alle" enige om.

Q: rs(0) raskere enn rs("name")?

> Her tror jeg bestemt du har ret. Parseren skal formentlig finde data som
> en position i et postarray - og den position skal den slå op hvis man
> bruger rs("navn") mens den kan læses og bruges direkte når man bruger
> rs(0). Til gengæld bliver koden langt mindre læselig når man bruger
> indeksværdier - det er en væsentlig og negativ sideeffekt.

Jeg fant denne linken:
http://www.aspfaq.com/show.asp?id=2038
Her påstås det at rs(0) er "several times faster" enn rs("name"). Det er
en drøy påstand, men det er dyktige folk som sier dette og selv om jeg
ikke har gjort noen tester selv, så er det likevel verdt å merke seg.
Koden blir mindre leselig, ja, men linken foreslår en løsning også på dette.

En viktig konklusjon på en diskusjon som dette synes jeg bør være at de
som er nybegynnere i ASP prøver å legge seg til gode vaner helt fra
starten av. F. eks. bør alle skrive:

Request.Form("Email") og ikke kun Request("Email")
Bruke GetRows (eller GetString) når dette er hensiktsmessig, ikke SELECT
* FROM osv
Bruke rs("Email") ELLER rs.Fields("Email").Value, og være _konsekvent_ i
sitt valg.
Bruke rs(1) og ikke rs("Email") eller rs.Fields("Email").Value hvis
hensiktsmessig.

terje


Jens Gyldenkærne Cla~ (19-11-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-11-04 14:19

terje skrev:

> http://www.aspfaq.com/show.asp?id=2038
> Her påstås det at rs(0) er "several times faster" enn rs("name").

Ja - og som nævnt før tror jeg også det er rigtigt. Men det er dog
irriterende at faq-artiklen ikke henviser til nogen af de mange beviser
den påstår der findes for udsagnet. Og ligeledes lidt tyndt at der ikke
henvises til hvor meget "several times faster" dækker over.

> Det er en drøy påstand,

Jeg tror jeg ved hvad du mener, men kan du ikke lige forklare ordet
"drøy" (eller bare hvad du mener med "drøy påstand") - jeg kan ikke
norsk nok til at forstå det ordentligt.

> Koden blir mindre leselig, ja, men linken foreslår en løsning også på dette.

Det er et udmærket forslag, omend det kan være lidt omstændeligt at
indføre lokale variabler hvis det bare er en simpel udskrift man skal
bruge.


> En viktig konklusjon på en diskusjon som dette synes jeg bør være at de
> som er nybegynnere i ASP prøver å legge seg til gode vaner helt fra
> starten av.

Helt enig - også i dine efterfølgende eksempler.

--
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

terje (19-11-2004)
Kommentar
Fra : terje


Dato : 19-11-04 15:14

Jens Gyldenkærne Clausen wrote:

>>Det er en drøy påstand,
>
>
> Jeg tror jeg ved hvad du mener, men kan du ikke lige forklare ordet
> "drøy" (eller bare hvad du mener med "drøy påstand") - jeg kan ikke
> norsk nok til at forstå det ordentligt.

Ja, hva pokker betyr det? Fjellapenes språk er ikke alltid enkelt å
forstå
Det må bety noe i retning av _kraftig påstand_ eller _muligens overdrevet_.

terje

Ukendt (19-11-2004)
Kommentar
Fra : Ukendt


Dato : 19-11-04 14:45


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote>
> > Der skal fortolkes mere af serveren, når de korte udgaver
> > benyttes...
>
> Er det noget du har referencer til?
Hæfte ASP 3 af Michell Cronberg
Side 28 (5.1.2) Genvej til Write metoden
Citat: "Genvejen kan gøre kode lidt nemmere at læse, men man skal dog ikke
overdrive brugen af genvejen, idet den rent afviklingsmæssigt vil være
langsommere en brug af Write" Citat slut.
Bjarne



JH (19-11-2004)
Kommentar
Fra : JH


Dato : 19-11-04 20:41

bsn wrote:
> Hæfte ASP 3 af Michell Cronberg
> Side 28 (5.1.2) Genvej til Write metoden
> Citat: "Genvejen kan gøre kode lidt nemmere at læse, men man skal dog ikke
> overdrive brugen af genvejen, idet den rent afviklingsmæssigt vil være
> langsommere en brug af Write" Citat slut.
> Bjarne

Og jeg kan tilføje at jeg har set artikler hvori der var lavet en
sammenligning af hvor lang tid det tager at eksekvere kode der lavet med:
respone.write()
ift.
<%=%>

Det var tydeligt at <%=%> metoden var langsommere. Grunden er at
ASP-parseren skal bruge mere tid, fordi den hver gang skal finde ud af
hvor næste kode-blok er. Og det tager - naturligvis - mere tid. Derfor
anbefales det at lave sit script som een blok:
<%
'kode
response.write()
'kode
%>

Istedet for flere blokke:
<%
'kode
%>
html...
<%=%>
html...
<%
'kode
%>

Det er klart at jo flere kode-blokke man har, jo langsommere går det,
derfor tror jeg ikke et par enkelte <%=%> gør den store forskel. Kun
hvis man har mange (hvad 'mange' så er...).

Jeg skal se om jeg kan finde de artikler.

Mvh
Jeppe

JH (19-11-2004)
Kommentar
Fra : JH


Dato : 19-11-04 23:14

JH wrote:
> Jeg skal se om jeg kan finde de artikler.

http://www.webdevelopersjournal.com/articles/asp_performance.html

http://www.devx.com/tips/Tip/13514

Tip 15 (samme sted som Jens har henvist til):
http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/iis/tips/asptips.mspx
Iøvrigt gode tips her.

Hmm... Ingen af de artikler jeg har kunnet finde viser deciderede
målinger. Måske er der nogen der har tid til at lave et eksempel?

Fx:
start timer
Lav en masse response.write's
end timer

start timer
Lav en masse <%=%>
end timer

kunne være interessant at se resultatet. Jeg er sikker på
response.buffer=true og response.buffer=false vil gøre en forskel.

Mvh
Jeppe

Jens Gyldenkærne Cla~ (19-11-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-11-04 23:02

terje skrev:

> Ja, hva pokker betyr det? Fjellapenes språk er ikke alltid
> enkelt å forstå

Ah - det er nu sjældent at det giver større problemer.


> Det må bety noe i retning av _kraftig påstand_ eller _muligens
> overdrevet_.

Tak for forklaringen. På dansk har vi også ordet "drøj", og med én
af de tre betydningen min ordbog[1] har på det ("som savner finfølelse
og derfor kan være fornærmende") giver det faktisk også mening i
sammenhængen "drøj påstand".

Men de to andre betydningsmuligheder ("som rækker langt el. varer
længe" og "som tager tid og kræfter") er noget mere almindelige i
brug på dansk - derfor forstod jeg ikke brugen af "drøj" i første
omgang.

Noter:
======

[1] Politikens Nudansk med Etymologi, 1999
--
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

Jens Gyldenkærne Cla~ (19-11-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-11-04 23:22

JH skrev:

> Det er klart at jo flere kode-blokke man har, jo langsommere
> går det,

Det tror jeg du har ret i.

> derfor tror jeg ikke et par enkelte <%=%> gør den store forskel.

Specielt bør det gælde at der ingen forskel er på følgende stumper:

A:
   <td><% Reponse.write rs("navn") %></td>
   <td><% Response.write rs("adresse") %></td>

B:
   <td><%= rs("navn") %></td>
   <td><%= rs("adresse") %></td>


Der vil derimod nok være forskel på stumperne her:

C:    <% Response.write rs("navn") & " " & rs("adresse") %>
D:    <%= rs("navn") %> <%= rs("adresse") %>
   

> Jeg skal se om jeg kan finde de artikler.

Jeg faldt lige over noget - faktisk på den side jeg har henvist til
højere oppe i tråden:
<http://msdn.microsoft.com/library/en-us/dnasp/html/asptips.asp>

(se tip # 15)

Her fremgår det netop at optimeringen går ud på at samle udskrifter
til browseren (response.write) i større bidder. Det kan ikke opnås
ved at bruge <%= foo %>, så i den forstand er det rigtigt at <%
response.write foo %> er at foretrække - men det er altså
muligheden for at udskrive mere end én ting der gør forskellen.

Desuden fremgår det af samme tip at det primært har betydning hvis
response buffering er slået fra (det er slået til som standard).
Hvis nogen har eksempler på hvor meget der er at hente ved at
optimere response.write med eller uden response buffering, vil det
være rart at se i gruppen.
--
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

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