我正在开发用于在线测试/考试的小型asp.net mvc基础应用程序。我有这样的场景,当用户要求加载测试时,我得到问题对象列表LIST 在我的控制器的索引操作中。但要求是这个用户不应该一次看到所有问题,而应该出现一个一个问题。我保留了每个问题的估计时间,我在右上角显示所有问题的时间总和,以便用户可以看到时间限制。它是每秒减少的计时器。我很困惑如何为所有问题保持运行计时器。我怎样才能逐一呈现问题而不是所有问题。由于asp.net mvc中没有回发,因此这种情况的实现非常困难。请指导
已编辑: * 我可以这样做吗? *
[HTTPGET]
public ActionResult Index(int? testId)
{
int id = Convert.ToInt32(testId);
List<Question> questionList;// = new List<Question>();
questionList = questionManager.GetquestionsByTestId(id);
if (questionList != null)
{
foreach (Question q in questionList)
{
return RedirectToAction("LoadNextQuestion", "LoadTest", q);
}
return View();
}
else
{
return View();
}
}
public ActionResult LoadNextQuestion(Question objQuestion)
{
Question question = questionManager.GetQuestionById(objQuestion.QuestionId);
ViewData["Question"] = question;
return View();
}
答案 0 :(得分:1)
我认为你将不得不在这个问题上采用AJAX。首先,因为一次加载1个问题,其次是因为没有刷新整个页面并从服务器获取定时器;您可能必须处理服务器上的计时器状态,因此强制刷新不会影响它。 只是我的两分钱。
答案 1 :(得分:1)
您不需要此列表
创建用户控件或页面并放入母版页,一次显示每个问题。(假设用户将单击以查看下一个问题)。对于表格上的下一个问题,您将获得用户回答的内容以及时间。
您可以使用json / ajax调用来提取下一个问题。
使用java脚本跟踪时间(写入函数OnDocumentReady或在填充问题后触发的其他内容)
不要忘记用用户的回答发布已用时间,这样就不用担心时间花在问题上了。