webForumDet fria alternativet

förladda sida

.NET

19 svar · 963 visningar · startad av Vinnaren

Medlem sedan sep. 2005833 inlägg
Frågan#1

Har följande:

    protected void btnSave_Click(object sender, EventArgs e)
    {
        if (txtName.Text != "")
        {
               // gör nott
        }

        System.Threading.Thread.Sleep(5000);
        Response.Redirect("Index.aspx");
    }

Nu vill jag när sidan "sover" förladda kommande sida som ska visas dvs Index.aspx så man slipper o komma till en vit sida o där se den laddas.

Hur gör man detta och går det?

Tacksam för all hjälp :stud

Medlem sedan feb. 2005280 inlägg
#2

Skippa Sleep och redirecta på direkten så hoppar den dit färdigladdad :-D

Medlem sedan sep. 2005833 inlägg
#3

mjo, det går, men blir inte lika "snyggt" som jag vill ha det :e

Måste väll gå att lösa på nott sätt? eller :q

Medlem sedan okt. 20041 556 inlägg
Medlem sedan sep. 2005833 inlägg
#5

tack, men hur löser man själva övergången med detta javascript till nästa sida som ska visas? Här används ju iframe. :q

Medlem sedan okt. 20041 556 inlägg
#6

Men du laddar den sida besökaren skall gå till på sidan innan.

Sida1.aspx
här laddas sida2 så att den redan är inladdad i cachen.
Gör en massa annat.
Klicka på länk till sida2.aspx
Sida2 visas snabbt eftersom att den redan är "besökt".

Medlem sedan sep. 2005833 inlägg
#7

ok, tack, men hur fungerar page_onload på den sidan som laddas in? körs den eller körs den först när besökaren får upp den? :q

Medlem sedan okt. 20041 556 inlägg
#8

Den körs på samma sätt som om att användaren klickar sig dit på "vanligt sätt".

Medlem sedan okt. 20041 556 inlägg
#9

Om du inte vill det kan du ju skicka med en parameter i preloadern.
Sida1.aspx

<script type="text/javascript">
var loadobjects=["/sida2.aspx?param=1"];
...

Sida2.aspx

protected void page_load(object sender, EventArgs e)
    {
        if(Request.QueryString("param")="1"){
//Preloadern
   }else{
//Direkt
}

}
Medlem sedan sep. 2005833 inlägg
#10

ok, tack, ska provar. Men om jag vill börja ladda in sidan(index.aspx) vid sleepen och inte när denna sida laddas, hur löser man detta?

Medlem sedan dec. 19996 721 inlägg
#11

Om du lägger Sleep på en sida så kommer du bara att fördröja renderingen av denna, eftersom du fryser tråden.

Det du borde kunna göra är att köra en javascript-redirect i funktionen som anropas av iframens onload.

Medlem sedan sep. 2005833 inlägg
#12

i stället för att anropa funktionen i iframens onload, kan man inte istället anropa den i code-behind?

   protected void btnSave_Click(object sender, EventArgs e)
    {
        if (txtName.Text != "")
        {
               // sett session
        }

        // Anropa javascript som laddar in kommande sida
        System.Threading.Thread.Sleep(5000);        
    }
Medlem sedan dec. 19996 721 inlägg
#13

Vinnaren skrev:

i stället för att anropa funktionen i iframens onload, kan man inte istället anropa den i code-behind?

Nej. Använd INTE Sleep på en ASP.NET-sida. ASP.NET levererar all HTML på ett bräde (såvida man inte går förbi hela systemet och Response.Write:ar ut innehåll), och om du anropar Sleep så är det enda som händer att denna "leverans" fördröjs.

Medlem sedan sep. 2005833 inlägg
#14

ok, men nu ska jag anv sleep för att animeringen ska fungera. (försvinner så snabbt annars)
Men hur löser man anropandet av javascriptet? Vill inte ladda in kommande sida när man besöker startsidan, utan jag vill ladda in den när man har klickat på knappen. :q

Har typ en bild "laddar ..." som ska visas när man har klickat på knappen tills sidan man ska komma till är helt färdigladdad. Kanske finns något annat sätt att lösa det på? :q

Medlem sedan dec. 19996 721 inlägg
#15

Använd ingen serverside-kod för det. Gör en vanlig knapp med en onclick som sätter igång förinladdningen. JS-redirecta på onload.

Medlem sedan sep. 2005833 inlägg
#16

ok. har provat att ha den på knappen, men det går inte. För att kunna komma åt sidan man ska till måste en session vara satt, vilket den inte är nu då javascriptet körs innan sessionen är satt. Måste ju gå att anropa javascript funktionen i code-behind? eller finns det nott annat sätt :q

Medlem sedan feb. 200712 inlägg
#17

Vinnaren jag föreslår att du tittar på AJAX. Då laddas bara en liten bit av sidan om. Det är inte så svårt att lägga till AJAX på en enklare befintlig applikation. Jag rekommenderar verkligen den här filmen: http://www.asp.net/ajax/ (välj filmen med rubriken: "ASP.NET AJAX: A demonstration of ASP.NET AJAX")

Medlem sedan sep. 2005833 inlägg
#18

ok, tack för tipset, är just AJAX jag håller på med. Dock så ska inte sidan laddas om, utan det är en helt ny sida som ska vara berädd att visas

Medlem sedan dec. 19996 721 inlägg
#19

Vinnaren skrev:

ok. har provat att ha den på knappen, men det går inte. För att kunna komma åt sidan man ska till måste en session vara satt, vilket den inte är nu då javascriptet körs innan sessionen är satt. Måste ju gå att anropa javascript funktionen i code-behind? eller finns det nott annat sätt :q

OK. Sessionsvärdet sätts av knappen? Du kan inte anropa funktionen, men du kan spotta ut Javascript på sidan som anropar den åt dig. Använd ClientScript.RegisterStartupScript

Medlem sedan sep. 2005833 inlägg
#20

ok, tack. En liten fundering jag har nu när jag tänkte använda jQuery.
Går det att förladda en sida med hjälp av någon funktion där? Finns ju ett antal pluggin som man kan använda eller?

269 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)