где хранить временные данные в проекте MVC 2.0 - PullRequest
0 голосов
/ 05 мая 2010

Я начинаю изучать MVC 2.0 и пытаюсь создать сайт с викториной: пользователю задают вопрос и дают несколько вариантов ответа. Если он выбирает правильный ответ, он получает несколько очков, а если нет, он теряет их.

Я пытался сделать это следующим образом


    public class HomeController : Controller
    {
       private ITaskGenerator taskGenerator = new TaskGenerator();
       private string correctAnswer;</p>

<pre><code>    public ActionResult Index()
    {
        var task = taskGenerator .GenerateTask();
        ViewData["Task"] = task.Task;
        ViewData["Options"] = task.Options;

        correctAnswer= task.CorrectAnswer;
        return View();
    }

    public ActionResult Answer(string id)
    {
        if (id == correctAnswer)
            return View("Correct")

        return View("Incorrect");
    }
}

Но у меня проблема: когда пользователь отвечает, класс cotroller воссоздается, и я теряю правильный ответ. Так что же является лучшим местом для хранения правильного ответа? Должен ли я создать статический класс для этой цели?
Спасибо за вашу помощь!

Ответы [ 3 ]

2 голосов
/ 05 мая 2010

Существует много разных способов сохранения данных в нескольких запросах.

  • Печенье
  • Уровень базы данных
  • Просмотр состояния (вывод данных и их передача в каждом запросе)

чтобы назвать несколько. Самым простым из них, вероятно, является реализация состояния представления. Вы можете свернуть свой собственный, как это

<input type="hidden" name="question_1" value="<%=ViewData["question_1"]%>" />

Этот вход будет перенесен в следующую отправку, так что вы можете отслеживать значение.

public ActionResult Step1Post(string answer)
{
    ViewData["question_1"] = answer;
    return View("Step2")
}

public ActionResult Step2Post(string answer, string question_1)
{
    question_1; // the answer from step 1
    answer; // the answer from step 2
}
0 голосов
/ 05 мая 2010

Звучит так, как taskGenerator.GenerateTask () даст вам какой-то тип задачи, но эта задача сохранилась где-нибудь? (Откуда этот метод получает задачу)?

Если с Задачей связан идентификатор, вы можете отправить идентификатор задачи в своем представлении, а затем снова просмотреть задачу, когда они ответят. Затем вы можете получить CorrectAnswer из этой задачи и провести сравнение.

0 голосов
/ 05 мая 2010

вы также можете сохранить его в сеансе с уникальным ключом guid и сохранить только sessionKey в виде скрытого ввода

на самом деле это также может зависеть от объема данных, которые вы будете хранить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...