0

私はオンラインテスト/試験用の小さなasp.netmvcベースアプリケーションを開発しています。ユーザーが負荷テストを要求すると、コントローラーのインデックスアクションで質問オブジェクトのリストが表示されるようなシナリオがあります。ただし、このユーザーは、質問を1つずつ表示するのではなく、一度にすべての質問を表示できないようにする必要があります。私は各質問の推定時間を維持しましたが、ユーザーが制限時間を確認できるように、すべての質問の時間の合計を右上隅に表示しています。1秒ごとに減るタイマーです。私はすべての質問に対して一般的に実行タイマーを維持する方法について混乱しています。そして、どうすればすべての質問ではなく、1つずつ質問をレンダリングできますか。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つの質問をロードするため、第二に、ページ全体を更新せず、サーバーからタイマーを取得するためです。強制更新がサーバーに影響を与えないように、サーバーでタイマーステータスを処理する必要がある可能性があります。ちょうど私の2セント。

于 2011-01-25T09:47:31.630 に答える
1
  1. このためのリストは必要ありません

  2. ユーザーコントロールまたはページを作成してマスターページに配置し、各質問を一度に表示します(ユーザーが次の質問をクリックするとします)。次の質問のためにフォームを投稿してください。そうすれば、ユーザーが答えた内容と時間もわかります。

  3. 次の質問をフェッチするためにjson/ajax呼び出しを使用できます。

  4. Javaスクリプトを使用して時間を追跡します(書き込み関数OnDocumentReadyまたは質問が入力された後にトリガーされる他の何か)

  5. 経過時間をユーザーの回答とともに投稿することを忘れないでください。質問に時間を費やす心配はありません。

于 2011-01-25T10:05:07.770 に答える