用B/S做考试系统的效果不是很理想,建议用C/S系统,除非你在IE上用ActiveX,如果不用ActiveX的话,大概也只能这么做了:
1。客户端:
<script language="javascript">
var min=60; //假定为60分钟
var delay=5; //假定允许延时5分钟。
function alertuser()
{
    window.alert('考试时间到,请交卷。');
    //下面你可以加上你自己的一些控制,比如将除了提交按钮之外所有的输入框等输入项设成ReadOnly等
    // ......
}
window.setTimeout('alertuser()',min*60*1000);
</script>2。服务器端:
在用户登陆后必须设置
int delay=5;  //假定允许延时5分钟。
Session["CheckPoint"]=DateTime.Now.AddMinutes(60+delay);
Session.Timeout必须大于考试的时间3。当用户交卷后比较提交时间和Session["CheckPoint"]的值,看是否超时。
4。不要用Cookie,因为普通Cookie是明文的,高手可以在客户端改Cookie。用ASP.NET的话,一定加上在服务器端验证,以防作弊。

解决方案 »

  1.   

    对不起,楼上的代码有一点遗漏,更正一下:用B/S做考试系统的效果不是很理想,建议用C/S系统,除非你在IE上用ActiveX,如果不用ActiveX的话,大概也只能这么做了:
    1。客户端:
    <script language="javascript">
    var min=60; //假定为60分钟
    var delay=5; //假定允许延时5分钟。
    function alertuser()
    {
        window.alert('考试时间到,请交卷。');
        //下面你可以加上你自己的一些控制,比如将除了提交按钮之外所有的输入框等输入项设成ReadOnly等
        // ......
    }
    window.setTimeout('alertuser()',(min+delay)*60*1000);
    //                              ^^^^^^^^^^^更正
    </script>2。服务器端:
    在用户登陆后必须设置
    int delay=5;  //假定允许延时5分钟。
    Session["CheckPoint"]=DateTime.Now.AddMinutes(60+delay);
    Session.Timeout必须大于考试的时间3。当用户交卷后比较提交时间和Session["CheckPoint"]的值,看是否超时。
    4。不要用Cookie,因为普通Cookie是明文的,高手可以在客户端改Cookie。用ASP.NET的话,一定加上在服务器端验证,以防作弊。
      

  2.   

    Sorry ,it's the last time
      

  3.   

    我还想问一下!我怎么才能将上面得代码嵌入到我的页面中去呢?在asp.net中,C#和标记是分开的!
    假设我有一个按钮叫“开始答卷”,我怎么才能通过这个事件来触发上面的计时代码??多谢各位了,麻烦大家帮帮忙!!
      

  4.   

    给一个label控件
    通过按钮写入:<script>....</script>
      

  5.   

    不要用Label,最简单的是用Panel,在aspx页面上一个Panel组件,然后在中间放上Javascript代码,就像下面这样:<asp:Panel ID="Panel1" Visible="False" RunAt="Server">
        <script language="javascript">
            ......
        </script>
    </asp:Panel>然后在“开始答卷”的按钮事件中将Panel1的Visible属性改为True即可。