2009-08-07 16 views
0

I Online-Prüfung Anwendung entwickle asp.net verwenden, in der Start Prüfung Seite i ein Javascript-Countdown-Timer erstellt habe, wie kann ich zur nächsten Seite zu gelangen 00 automaticaly nach Timer erreicht und hier ist mein CodeJavascript Timer

Langer TimerStartValue = 1000;

private int TimerInterval 
{ 
    get 
    { 
     int o =(int) ViewState["timerInterval"]; 
     if(o==0) 
     { 

      return (o); 
     } 
     return 50 ; 
    } 
    set 
    { 
     ViewState["timerInterval"] = value; 

    } 
} 

protected void Page_PreInit(object sender,EventArgs e) 
{ 
    string timerVal = Request.Form["timerData"]; 
    if(! String.IsNullOrEmpty(timerVal)) 
    { 
     timerVal = timerVal.Replace(",", String.Empty) ; 
     this.timerStartValue = long.Parse(timerVal); 

    } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(! IsPostBack) 
    { 
     this.timerStartValue = 10000; //3599000;//14400000; 
     this.TimerInterval = 500; 
    } 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    this.timerStartValue = 3599000; 
} 

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    System.Text.StringBuilder bldr=new System.Text.StringBuilder(); 
    bldr.AppendFormat("var Timer = new myTimer({0},{1},'{2}','timerData');", this.timerStartValue, this.TimerInterval, this.lblTimerCount.ClientID); 
    bldr.Append("Timer.go()"); 

    ClientScript.RegisterStartupScript(this.GetType(), "TimerScript", bldr.ToString(), true); 
    ClientScript.RegisterHiddenField("timerData", timerStartValue.ToString()); 
} 

Danke im Voraus Sangita

Antwort

0

Es klingt wie, wenn Sie die Schaltfläche „Weiter“ klicken, erhalten Sie eine völlig neue Seite geladen werden. Dies ändert natürlich den gesamten Inhalt und setzt das gesamte Javascript zurück. Sie können den Status auf Seiten nicht ohne etwas Arbeit beibehalten.

Die Lösung könnte darin bestehen, den Timer-Status zu speichern, wenn die nächste Taste gedrückt wird, und sie an die nächste Stufe zu übergeben. Sie können dies tun, indem Sie den Timer-Status in einer versteckten Formulareingabe speichern und ihn zusammen mit der Schaltfläche Weiter übermitteln.

Die andere Möglichkeit wäre, Ihre Fragen über AJAX zu laden. Anstatt bei jedem Klick auf die nächste Schaltfläche auf eine neue Seite zu wechseln, können Sie einfach den Fragebereich der Seite durch eine neue Frage ersetzen und den Timer intakt lassen. Dies ist wahrscheinlich die Lösung, die ich verwenden würde.

0

Laden Sie die gesamte Seite neu, wenn Sie auf die nächste Schaltfläche klicken? Das kann dazu führen, dass die Java-Skript-Datei ebenfalls. So werden die Variablenwerte zurückgesetzt. Vielleicht können Sie darüber nachdenken, die Fragen/Antworten über Ajax zu zeigen. Sie müssen nicht die gesamte Seite neu laden, wenn Sie die nächste Frage zeigen Das Quiz wird nur aktualisiert. So können Sie die globalen Variablen auch in Ihrem Java-Skript pflegen. Überprüfen Sie den folgenden Link, um zu erfahren, dass die Seite teilweise mit jQuery aktualisiert wurde.

http://www.west-wind.com/presentations/jquery/jquerypart2.aspx

Hoffnung, das hilft.

0

Sie können den Timer in einen IFrame setzen, wenn Sie das Postback nicht loswerden können.

0

Sie benötigen einen Weg, um Informationen zwischen den Seiten zu bestehen, und es ist wirklich nur eine Möglichkeit: Um es Teil der nächsten Seite Anfrage zu machen. Jetzt

, könnte dies in zwei Kategorien unterteilt werden:

1) Im Rahmen der url: http://www.example.com/page?timer=123;

2) Als Teil der Header;

Und Nummer 2 eröffnet neue Möglichkeiten:

a) Im Rahmen der POST-Daten;

b) Nur als clientseitiger Cookie;

c) als Cookie mit Informationen auf dem Server verbunden;

Nummer 1, 2a und 2b können vom Benutzer manipuliert werden. Also, was können Sie tun, ist etwas Wert speichert in einem Cookie, einen Hash zum Beispiel oder eine Datenbank Zeilen-ID, dass Sie die Informationen auf dem Server holen verwenden werden.

tl; dr? Verwenden Sie ein asp "Sitzungsobjekt". Damit können Sie die Dinge auf der Server-Seite und die Benutzer keine Ahnung haben, was sie sind.