斐伊川,
我需要开发一个有MCQ的在线测验网站。我希望每页都有一个带有数字寻呼机的问题,以便用户可以前后来回。
我尝试使用FormView显示问题和RadioButtons。我创建了一个QANS类,它可以保存用户为他回答的问题选择的答案,以便我以后可以总结总得分。
现在,我面临的问题如下:
让用户在PageIndex上选择一个RadioButton,比如R,比如I,然后转到其他页面,比如K.当用户返回到第I页时,没有选择任何RadioButtons。 我尝试在Page_Load()中添加用于将RadioButton的Checked属性设置为true的代码,但它没有帮助。我也尝试使用PageIndexChanged和PageIndexChanging事件,但不检查RadioButton。
为特定问题选择的RadioButton已经存储,我能够使用Response.Write()打印它,但我无法保持RadioButton Checked。 该怎么做?
答案 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的可空性。
让我知道