使用ASP.NET的在线测验

使用ASP.NET的在线测验,asp.net,radio-button,formview,checked,Asp.net,Radio Button,Formview,Checked,嗨 我需要开发一个在线测验网站,将有MCQ。我想有一个问题,每页出现一个数字寻呼机,以便用户可以来回 我尝试使用FormView来显示问题和单选按钮。我创建了一个QANS类,它将保存用户为他确实回答的问题选择的答案,以便稍后我可以总结总分 现在,我面临的问题如下: 让用户在页面索引上选择一个单选按钮,比如R,比如I,然后转到其他页面,比如K。当用户返回到第I页时,没有一个单选按钮被选中。 我尝试添加代码,以便在页面_Load()中将RadioButton的Checked属性设置为true,但没有

我需要开发一个在线测验网站,将有MCQ。我想有一个问题,每页出现一个数字寻呼机,以便用户可以来回

我尝试使用FormView来显示问题和单选按钮。我创建了一个QANS类,它将保存用户为他确实回答的问题选择的答案,以便稍后我可以总结总分

现在,我面临的问题如下:

让用户在页面索引上选择一个单选按钮,比如R,比如I,然后转到其他页面,比如K。当用户返回到第I页时,没有一个单选按钮被选中。 我尝试添加代码,以便在页面_Load()中将RadioButton的Checked属性设置为true,但没有帮助。我还在PageIndexChanged和PageIndexChanging事件中也尝试了同样的方法,但是没有检查RadioButton

为特定问题选择的RadioButton已存储,我可以打印它使用的是Response.Write()选项,但我无法保持RadioButton处于选中状态。
如何做到这一点

您应该能够在

protected override void OnPreRender(EventArgs e)

页面生命周期的事件

您可以在会话中保存所选控件的状态,并在往返之后重新填充它们


奇怪的是,它在回发后失去了状态。在加载、页面索引交换或其他方面,您是否有任何疯狂的代码?

据我所知,您必须在页面索引中保持radiobutton的选中状态。您可以使用ViewState,因为它可以在页面的回发中保留数据

大概是这样的:-

//定义问题ID的列表 列出问题

//将列表添加到ViewState 如果(ViewState[“QuestionIdsAttempted”]!=null) { QuestionIDStrusted=新列表() ViewState[“QuestionIdsAttempted”]=QuestionIdsAttempted }

//当用户尝试提问时,将问题id添加到列表中 已尝试添加问题(qId)

//将列表添加回viewstate ViewState[“QuestionIdsAttempted”]=QuestionIdsAttempted

在单选按钮的page load in checked属性中,您可以使用当前问题id调用函数,该函数将从viewstate获取列表,并根据列表中是否存在id返回true或false

当然,您需要根据程序流在不同位置检查viewstate的可空性


请告诉我

您是否考虑过为此使用.Net向导控件?

谢谢。我不得不重写OnPreRenderComplete方法。