在线测验使用ASP dot NET

时间:2010-03-13 11:57:49

标签: asp.net radio-button formview checked

斐伊川,

我需要开发一个有MCQ的在线测验网站。我希望每页都有一个带有数字寻呼机的问题,以便用户可以前后来回。

我尝试使用FormView显示问题和RadioButtons。我创建了一个QANS类,它可以保存用户为他回答的问题选择的答案,以便我以后可以总结总得分。

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

让用户在PageIndex上选择一个RadioButton,比如R,比如I,然后转到其他页面,比如K.当用户返回到第I页时,没有选择任何RadioButtons。 我尝试在Page_Load()中添加用于将RadioButton的Checked属性设置为true的代码,但它没有帮助。我也尝试使用PageIndexChanged和PageIndexChanging事件,但不检查RadioButton。

为特定问题选择的RadioButton已经存储,我能够使用Response.Write()打印它,但我无法保持RadioButton Checked。 该怎么做?

4 个答案:

答案 0 :(得分:1)

您应该可以在

中选中单选按钮
protected override void OnPreRender(EventArgs e)

页面生命周期的事件

答案 1 :(得分:1)

您是否考虑过使用.Net向导控件? The ASP.Net 2.0 Wizard Control

答案 2 :(得分:0)

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

奇怪的是,它在回发后失去了状态。你在on_load或pageIndexChanging或其他任何东西都有疯狂的代码吗?

答案 3 :(得分:0)

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

类似这样的事情: -

//定义尝试的问题ID列表 列出questionIdsAttempted;

//将List添加到ViewState 如果(的ViewState [ “QuestionIdsAttempted”]!= NULL) { questionIdsAttempted =新列表() ViewState [“QuestionIdsAttempted”] = questionIdsAttempted }

//当用户尝试提问时,将问题ID添加到列表中 questionIdsAttempted.Add(QID);

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

在radiobuttons的checked属性的页面加载中,您可以使用当前问题ID调用函数,函数将从viewstate获取列表,并根据列表中是否存在id返回true或false。

当然,你需要根据程序的流程来检查各个地方的viewstate的可空性。

让我知道