Click here to Skip to main content
11,412,516 members (70,594 online)
Click here to Skip to main content

Online Exam in C# ASP NET

, 13 Sep 2010 CPOL
Rate this:
Please Sign up or sign in to vote.
Online Examination Project with CountDown Timer


Most of us have come across Examination / Quiz projects. The important aspects of those projects is to have a timer that runs through the entire duration of the exam, having the timer running without reset by postbacks is the main concern of this article.


The idea is to keep the value of the timer in view state and to supply the same on postback so that the timer will keep running from its previous value.

Using the Script

Understanding the script used here is not a big deal I guess, and am leaving it with a little explanation, go through the attachment for better understanding,

Timer is initiated in the page PreRender event, supplying the StartValue, Timerinterval and the clientId of the output element.

When the timer is started for the first timer, it is supplied with the duration of the examination say it is 30 min, and assume that the candidate spent 2 mins on a question and the postback occurs on 28 min, this value is kept in the view state and the same is used to start the timer again on the page PreRender event:

function myTimer(startVal,interval,outputId, dataField)
this.value = startVal;
this.OutputCntrl = document.getElementById(outputId);
this.currentTimeOut = null;
this.interval = interval;

myTimer.prototype.Seconds = function(value){
var hoursMillSecs = (this.Hours(value)*3600000)
var minutesMillSecs = (this.Minutes(value)*60000)
var total = (hoursMillSecs + minutesMillSecs)
var ans = Math.floor(((this.value - total)%60000)/1000);

this.OutputCntrl.innerHTML = this.Hours(current) + ':' + this.Minutes(current) 
+ ':' +  this.Seconds(current);

Keeping the Value in ViewState

You have to register the scrip with RegisterStartupScript in the codebehind file that supplies the view state value to the script and keeps the timer running.

Timer is initiated in PreRender event and the start value of the timer is requested from the view state and supplied to the timer, and this value changes on each postback as the exam is on progress.

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

      ClientScript.RegisterStartupScript(this.GetType(), "TimerScript",
                                    bldr.ToString(), true);

      ClientScript.RegisterHiddenField("timerData", timerStartValue.ToString());

// Gets or Sets the Timer Value to the ViewState
private Int32 TimerInterval
    object o = ViewState["timerInterval"];
    if (o != null) { return Int32.Parse(o.ToString()); }
    return 50;
    ViewState["timerInterval"] = value; 

Hope this will be a help to start your project. The attachment is prepared as a template that you can use for your project and can extend to meet your requirements.


  • 13th September, 2010: Initial post


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Software Developer
India India
I code, learn, listen, and some day in a near future be a proud farmer.
Follow on   Twitter

Comments and Discussions

QuestionNo Database In The App Data Folder Pin
obaid ahmed(gleam) at 27-Mar-15 15:58
memberobaid ahmed(gleam)27-Mar-15 15:58 
Questionerror Pin
AnirbanM 2 at 16-Jan-15 23:43
memberAnirbanM 216-Jan-15 23:43 
GeneralMy vote of 4 Pin
Member 10657356 at 15-Jun-14 6:46
memberMember 1065735615-Jun-14 6:46 
GeneralMy vote of 4 Pin
Rajesh19889 at 7-Apr-14 21:00
memberRajesh198897-Apr-14 21:00 
QuestionProblem with timer Pin
downloadsrk at 26-May-13 20:17
memberdownloadsrk26-May-13 20:17 
AnswerRe: Problem with timer Pin
VallarasuS at 26-May-13 20:26
memberVallarasuS26-May-13 20:26 
QuestionType or namespace ConnectToDb could not be found . Pin
aksrup at 17-May-13 4:45
memberaksrup17-May-13 4:45 
AnswerRe: Type or namespace ConnectToDb could not be found . Pin
VallarasuS at 19-May-13 21:02
memberVallarasuS19-May-13 21:02 
GeneralRe: Type or namespace ConnectToDb could not be found . Pin
aksrup at 20-May-13 1:19
memberaksrup20-May-13 1:19 
QuestionMaster Pages Pin
patiya at 25-Oct-12 2:04
memberpatiya25-Oct-12 2:04 
AnswerRe: Master Pages Pin
VallarasuS at 25-Oct-12 6:21
memberVallarasuS25-Oct-12 6:21 
QuestionDatabase download Pin
rahuljains at 18-Sep-12 21:31
memberrahuljains18-Sep-12 21:31 
AnswerRe: Database download Pin
Dannoman1234 at 15-Apr-14 3:32
memberDannoman123415-Apr-14 3:32 
QuestionTimer is not working when i added the scriptmanager tag in aspx page because of using ajax Pin
K.Mohamed Sujaludeen at 7-Sep-12 23:41
memberK.Mohamed Sujaludeen7-Sep-12 23:41 
QuestionRe: Timer is not working when i added the scriptmanager tag in aspx page because of using ajax Pin
vsanju at 6-Jun-14 0:18
membervsanju6-Jun-14 0:18 
QuestionNot find file solution? Pin
k56flex at 23-Aug-12 19:01
memberk56flex23-Aug-12 19:01 
AnswerRe: Not find file solution? Pin
VallarasuS at 23-Aug-12 19:28
memberVallarasuS23-Aug-12 19:28 
QuestionVB Version of the timer Pin
patiya at 17-Aug-12 6:58
memberpatiya17-Aug-12 6:58 
AnswerRe: VB Version of the timer Pin
VallarasuS at 20-Aug-12 20:45
memberVallarasuS20-Aug-12 20:45 Pin
Member 8698767 at 23-May-12 19:11
memberMember 869876723-May-12 19:11 
Questiondatabase for quiz Pin
mbjino at 15-Apr-12 21:27
membermbjino15-Apr-12 21:27 
AnswerRe: database for quiz Pin
mbjino at 15-Apr-12 21:29
membermbjino15-Apr-12 21:29 
GeneralRe: database for quiz Pin
VallarasuS at 15-Apr-12 23:47
memberVallarasuS15-Apr-12 23:47 
GeneralRe: database for quiz Pin
mbjino at 16-Apr-12 4:01
membermbjino16-Apr-12 4:01 
GeneralRe: database for quiz Pin
tesstaco at 1-May-12 9:07
membertesstaco1-May-12 9:07 
I am also missing this page.
QuestionTimer Pin
sammaed at 29-Jan-12 20:10
membersammaed29-Jan-12 20:10 
AnswerRe: Timer Pin
VallarasuS at 30-Jan-12 5:03
memberVallarasuS30-Jan-12 5:03 
GeneralRe: Timer Pin
sammaed at 30-Jan-12 7:32
membersammaed30-Jan-12 7:32 
GeneralRe: Timer Pin
VallarasuS at 30-Jan-12 8:05
memberVallarasuS30-Jan-12 8:05 
GeneralRe: Timer Pin
Member 9947303 at 27-Mar-13 18:32
memberMember 994730327-Mar-13 18:32 
QuestionDATA base Pin
Rajeshkrathor at 28-Dec-11 20:40
memberRajeshkrathor28-Dec-11 20:40 
AnswerRe: DATA base Pin
VallarasuS at 29-Dec-11 16:15
memberVallarasuS29-Dec-11 16:15 
GeneralMy vote of 4 Pin
kitupadma at 30-Oct-11 20:43
memberkitupadma30-Oct-11 20:43 
GeneralRe: My vote of 4 Pin
vallarasus at 17-Nov-11 5:18
membervallarasus17-Nov-11 5:18 
QuestionExam Questions in a SQLDB Pin
jpiscitelli at 20-Oct-11 5:09
memberjpiscitelli20-Oct-11 5:09 
AnswerRe: Exam Questions in a SQLDB Pin
vallarasus at 20-Oct-11 7:53
membervallarasus20-Oct-11 7:53 
GeneralRe: Exam Questions in a SQLDB Pin
jpiscitelli at 21-Oct-11 3:38
memberjpiscitelli21-Oct-11 3:38 
GeneralRe: Exam Questions in a SQLDB Pin
Member 9632469 at 26-Nov-12 12:19
memberMember 963246926-Nov-12 12:19 
GeneralMy vote of 2 Pin
surendramarri at 12-Jan-11 1:57
membersurendramarri12-Jan-11 1:57 
GeneralMy vote of 4 Pin
HardikKSavaliya at 6-Dec-10 4:42
memberHardikKSavaliya6-Dec-10 4:42 
GeneralMy vote of 3 Pin
saxenaabhi6 at 13-Sep-10 20:21
membersaxenaabhi613-Sep-10 20:21 
GeneralRe: My vote of 3 Pin
vallarasus at 1-Jun-11 9:55
membervallarasus1-Jun-11 9:55 
GeneralMy vote of 1 Pin
j03x2 at 13-Sep-10 8:31
memberj03x213-Sep-10 8:31 
GeneralMy vote of 2 Pin
Sandeep Mewara at 28-Aug-10 6:41
mentorSandeep Mewara28-Aug-10 6:41 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.150427.1 | Last Updated 13 Sep 2010
Article Copyright 2010 by VallarasuS
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid