1

嗨,

我需要开发一个包含 MCQ 的在线测验网站。我希望使用数字寻呼机每页显示一个问题,以便用户可以来回移动。

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

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

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

为特定问题选择的 RadioButton 已被存储,我可以打印它使用的是哪个 Response.Write() 但我无法保持 RadioButton 处于选中状态。这应该怎么做?

4

4 回答 4

1

您应该能够在

protected override void OnPreRender(EventArgs e)

页面生命周期事件

于 2010-03-13T12:10:42.633 回答
1

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

于 2010-03-13T12:31:43.947 回答
0

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

奇怪的是它在回发后失去了状态。您的 on_load 或 pageIndexChanging 是否有任何疯狂的代码?

于 2010-03-13T12:14:09.467 回答
0

据我了解,您必须在页面索引中保持单选按钮的选中状态。您可以为此使用 ViewState,因为它可以跨页面的回发保留数据。

像这样的东西: -

// 定义一个问题 id 尝试列表 List questionIdsAttempted;

//将List添加到ViewState if(ViewState["QuestionIdsAttempted"]!=null) { questionIdsAttempted= new List() ViewState["QuestionIdsAttempted"] = questionIdsAttempted }

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

// 将列表添加回视图状态 ViewState["QuestionIdsAttempted"] = questionIdsAttempted

并且在单选按钮的选中属性的页面加载中,您可以使用当前问题 id 调用一个函数,该函数将从视图状态中获取列表,并根据 id 是否存在于列表中返回 true 或 false。

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

让我知道

于 2010-03-13T12:17:40.670 回答