首页 新闻 会员 周边

asp.net页面如何实现A页面控制B页面中的控件

0
悬赏园豆:50 [已关闭问题]

我现在在做一个在线考试系统,其中有一个功能是考试监控,其中有暂停考试,延长考试时间,强制交卷,等功能。当我选择某考生并点击"暂停考试"按钮时,该考生页面处于暂停考试状态,并提示考生暂停考试信息。

问题补充: 一直没有思路,不知道从那方面下手,请各位高手指点指点。
question2的主页 question2 | 初学一级 | 园豆:115
提问于:2010-05-28 14:34
< >
分享
其他回答(6)
0

页面加载完成后就与服务器没有联系了,你不可能继续控制这个页面,只有当页面再次提交时才能控制,如果实时性要求不高可用在第二次提交时提示考生。

一个折中的实时办法是:在考生的页面中使用ajax实时读取服务器信息,服务器消息变化后可以提示考生。

pppp | 园豆:210 (菜鸟二级) | 2010-05-28 15:39
您说的服务器信息是用session储存的吗? 如果有100个考生,那是不是需要把每个考生的状态都储存下来啊? 如果是这样的话,就是在考试监控页面更新session储存状态值?
支持(0) 反对(0) question2 | 园豆:115 (初学一级) | 2010-05-28 16:20
0

每个页面加载一个ajax定时器,异步定时查看考试是否暂停。

假如考试开关在session存放,如果时间到,管理员通过权限调整session存储的开关即可。而考卷在ajax请求时发现session中的已经关闭,返回客户端,提示用户到时,并停止。

Astar | 园豆:40805 (高人七级) | 2010-05-28 15:53
0

服务器做一个返回状态的接口,客户端用ajax, 做一个DIV是整屏的, 每几秒就用学生的ID去请求服务器的接口, 如果锁定的, 就把DIV设置到顶层, 只能让他们看. 不能操作等

风浪 | 园豆:2996 (老鸟四级) | 2010-05-28 16:04
客户端用ajax,能否给个示例。服务器的接口是不是写一个类,用来存储每个考生的状态。
支持(0) 反对(0) question2 | 园豆:115 (初学一级) | 2010-05-28 16:30
0

可以占用一个http的长连接,实现服务器push。或者使用ajax进行轮训。

push方式很时时,但是占用一个连接(一般客户端只有两个可用连接),例如webim的实现

ajax轮训依赖于客户端,对服务器也是比较消耗。

这要根据具体使用场景来评估一下

GUO Xingwang | 园豆:3885 (老鸟四级) | 2010-05-28 20:46
0

你这个是典型的comnet应用,即反向ajax,你可以找找这方面的类库来用一下,园子里有很多这样的例子

大田 | 园豆:90 (初学一级) | 2010-05-29 16:17
0

个人觉得不推荐你使用comnet技术来处理,这样子做觉得吃力不讨好,如果要这样子做,个人觉得你完全可以使用Flash或者Silverlight的Socket来处理,毕竟你的使用对象是学生群里,这个比较好统一,因为他们要在线考试,那么使用这个技术相对来说是最有保障的,因为socket技术只要客户端或者服务器端有相关的操作都会进行会话的,所以这样子处理是最好的...

当然除了这样子的方式,使用ajax技术也是可以完全做到的,不过这样子做的话,需要考虑的因素就比较多,简单说就是页面上必须有一个timer进行计时,而且还必须要相对比较短的时间和服务器进行通信,以更新客户端(考生答题情况)和服务器端的状态(考生的所有状态在服务器端都要有存储).

然后你说到暂停的操作,我觉得可以这样子来处理,考生进行考试是一个统一的时间,那么你可以在服务器端设定一个后台运行的timer,设定他在几点到几点进行计时,这个timer是作为考试的起止时间的,是不会随着考生的暂停或者其他操作而进行变更的.也就是理想状态如果考生都没有进行暂停等操作的话,服务器端的timer计时完成时就是考试结束时间...

那要如何来控制针对考生暂停考试的计时操作呢?我觉得可以这样子来操作,就是进行考试补时操作,这个所谓的补时是这样子来处理的,也就是当考生进行考试时此时服务器端的timer就开始计时了,此时更新考生的起止考试时间,然后记得把考生补时时间此时置为0,也就是考生正常考试时这个补时时间永远是0,然后如果考生客户端请求暂停考试时间的话,那此时就需要在客户端维护一个timer同时需要更新服务器端该用户的状态(置为暂停状态),这个timer作用就是记录下此时时间,然后等待考生继续进行考试,记录下此时的时间,然后把这二者的时间记录到服务器端,同时记录暂停的时间并更新到补时时间字段中,然后把考生状态置位正常状态....

然后等到服务器端主timer的时间用完时,此时查看考生状态,此时就需要查看考生的补时字段是否有相应的时间值,如果有那么就延长该考生的时间,如果没有就置考生的状态为考试结束...当然这里延长考生的考试时间我觉得你可以使用一个缓存来处理,也就是定是存储补时的一个缓存时间,然后缓存时间到后可以调用callback来更新考生的状态...不过这里还需要注意一点,就是如果在这个补时时间段中考试还需要进行考试暂停的话,个人觉得你程序可以考虑这样子的操作不被允许,如果实在需要,那这个也相对是可以处理的,那这个就是看你的处理策略了,根据你设计的处理策略就好了..操作办法都是一样的

西越泽 | 园豆:10775 (专家六级) | 2010-05-30 01:04
0

那要看你的窗口是怎样打开的,如果是通过非模态对话框打开的是话,会得到打开窗口的句柄,你调试进去看下,就能看见里面熟悉的JavaScript函数了。想控制什么就控制什么!

Chris Yang | 园豆:205 (菜鸟二级) | 2010-06-12 13:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册