2010-05-05 3 views
0

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

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


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

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 воссоздан и я освобождаю правильный ответ. Итак, что является лучшим местом для хранения правильного ответа? Должен ли я создавать статический класс для этой цели?
Спасибо за помощь!

ответ

2

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

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

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

<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

Конечно, правильный ответ был бы видимым для пользователя, если бы он просматривал источник страницы. –

+0

@RexM, Не отображайте правильный ответ на странице. Просто ответ, введенный пользователем. Окончательная окончательная проверка должна быть выполнена после последнего шага. – Joel

0

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

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

0

Это звучит как taskGenerator.GenerateTask() даст вам какой-то тип задачи, но является ли эта задача постоянной? (Откуда этот метод получает задание)?

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

Смежные вопросы