19. november 2008 - 13:44Der er
8 kommentarer og 1 løsning
ASP.NET sammen med vbscript og activex
Hej eksperter, Jeg har en codebehind hvorfra jeg vha VBSscript fyrer et activeX kald afsted til et andet program. I gamle ASP lagde jeg det i <HEAD> men har forstået at man i ASP.NET bruger denne:
If (Not ClientScript.IsStartupScriptRegistered("clientScript")) Then ClientScript.RegisterClientScriptBlock(Me.GetType(), "clientScript", strScript) End If
hvir strscript udgør min vbscript. Det virker også fremragende MEN... hvis man ex. klikker videre på sitet og derefter bruger "back" knappen så afvikles vbscriptet igen. Den kører ikke codebehind igennem, for så kunne jeg godt finde på noget at gøre. Nej clientscrptet køres altså igen... til stor skade.
En god ide vil virkelig blive værdsat, og jeg vil straks afsende en rød ferrari til vedkommende:)
Kan du ikke bare lægge en scriptreference ind i stedet for selve scriptet, som kalder en aspx-side på serveren. Denne aspx-side skal så tage stilling til om der skal returneres et script eller om der bare skal returneres et tomt script. Det kan evt. være du skal sætte udløbsdatoen på scriptet til noget i fortiden, så siden altid vil hente det fra serveren igen (hvis ellers det fungerer)...
Hej softspot ved ikke om jeg helt er med, men hvis jeg fra codebehind kalder en anden x.aspx side som laver script (og fyrer det af), ja så vil jeg jo ende min x.aspx side. herfra skal jeg jo så lave en knap der klikker mig tilbage til min oprindelige side??? hvis jeg så bruger browserens "back" pil ja så kommer jeg jo bare tilbage til x.aspx siden og vupti fyres scriptet af igen.
det med udløb af scriptet lød måske interessant. hvordan gør man det. det ville være fint om scriptet kun fandtes i 2 sekunder og så var glemt:)
I den aspx-fil som hedder "mitvbscript.aspx" ligger der så noget kode (codebehind), der kan afgøre om den aktuelle side skal have det rigtige vbscript (det som du pt. sender til klienten) sendt tilbage eller bare et tomt svar.
Der er altså i bund og grund bare tale om at du fjerner scriptet fra klienten (og dermed browser-cachen) og rykker det over på serveren, hvor du bedre kan styre hvilket script siden rent faktisk skal have at se. Mht. styring af det dynamiske scripts udløb ("expiration"), så vil jeg mene at du kan smide nogle headers efter dit script i aspx-filen mitvbscript.aspx, som fortæller browseren at den skal hente et nyt fra serveren når siden i øvrigt hentes i browser-cachen.
det skal jeg lige prøve at fedte lidt med. Jeg har prøvet (havde håbet på) at jeg sidst i mit vbscript blot kunne kalde min side igen med response.redirect("http://server/minforside.aspx"), men den ignorere denne linie. ikke at scriptet fejler?!? den redirecter bare ikke.
Response.Redirect er umiddelbart en server-ting, så hvis du mener at du har lagt den i dit klient-script, så vil den nok ikke fungere... om den skal give en fejl... tjoh, det ville jeg forvente, men jeg har ikke rigtig brugt vbs på klienten, så hvad den gør og ikke gør, ved jeg faktisk ikke.
Dog vil jeg mene, at selvom om den response.redirect fungerede, så ville du ikke løse problemet, da din side stadig ville ligge i browserens cache. Hvis du endelig skulle noget i det retning, skulle du finde en VBScript-udgave af dette java script:
window.location.replace("minforside.aspx")
(hvis altså det ikke bare fungerer i VBS uden paranteserne...?)
softspot> Virker perfekt med at afslutte min vbscript med window.location.replace("minforside.aspx")?!? ikke noget med at skulle have ekstra aspx sider. jeg havde netop søgt efter dette, men havde ikke fundet noget til vbscript. var ikke klar over at javascript ville kunne anvendes i vbscript. Send et svar og ferrarien er på vej til dig.
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.