0

我正在开发用于在线测试/考试的小型 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();
        }
4

2 回答 2

1

我认为你将不得不在这个上使用 AJAX。首先,因为一次加载1个问题,其次因为没有刷新整个页面并从服务器获取计时器;您可能必须处理服务器上的计时器状态,因此强制刷新不会影响它。只是我的两分钱。

于 2011-01-25T09:47:31.630 回答
1
  1. 你不需要这个列表

  2. 创建用户控件或页面并放入母版页,一次显示每个问题。(假设用户将单击下一个问题)。对于下一个问题,请在表格中发布,这样您就可以获得用户回答的内容和时间。

  3. 您可以使用 json/ajax 调用来获取下一个问题。

  4. 使用 java 脚本跟踪时间(编写函数 OnDocumentReady 或其他在填充问题后触发的函数)

  5. 不要忘记用用户的答案发布经过的时间,这样您就不必担心花在问题上的时间。

于 2011-01-25T10:05:07.770 回答