Bonjour à tous,
Je dois faire un jeu basé sur un questionnaire, des questions et des réponses.
Dans le référentiel que j'ai choisi :
- 1 Questionnaire = 10 Questions
- 1 Question = 4 Réponses
Mon problème est le suivant :
Mon Controller "Jeu" appelle une View "Question".
Elle lui passe un ViewModel JeuVM
J'aimerais que les 4 réponses s'affichent à la manière d'un bouton ou submit.
Au clic d'un des boutons, j'aimerais que mon Controlleur "Jeu" récupére la réponse du bouton/submit.
J'ai pensé à ajouter un id aux submit, mais je n'arrive pas à récupéré l'id/name de celui qui a envoyé été utilisé
Ci-après les codes concernés
ViewModel : JeuViewModel.cs
Vue : Question.cshtml
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class JeuViewModel { public string Nickname { get; set; } public int Points { get; set; } public Questionnaire Questionnaire { get; set; } // Questionnaire en cours public int NumQuestion { get; set; } // Numéro de la Question public Question Question { get; set; } // Question en cours public List<Reponse> Reponses { get; set; } // Liste des 4 réponses à la question. }
Controller : Jeu
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 @model ProjectWays.ViewModels.JeuViewModel @{ ViewBag.Title = "Question " + Model.NumQuestion; } <h2>Question @Model.NumQuestion</h2> @using (Html.BeginForm("Question", "Jeu")) { @Html.AntiForgeryToken() <div class="form-horizontal"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) @Html.HiddenFor(model => model.Nickname) @Html.HiddenFor(model => model.NumQuestion) @Html.HiddenFor(model => model.Points) @Html.HiddenFor(model => model.Questionnaire.IdQuestionnaire) @Html.HiddenFor(model => model.Questionnaire.Libelle) @Html.HiddenFor(model => model.Question.IdQuestion) @Html.HiddenFor(model => model.Question.Libelle) <div class="form-group"> <div class="col-md-10"> <p> @Html.DisplayFor(model => model.Question.Libelle, new { @class = "control-label col-md-2" }) </p> </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <button type="submit" class="btn btn-default"> @Model.Reponses[0].Libelle </button> <button type="submit" class="btn btn-default"> @Model.Reponses[1].Libelle </button> </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <button type="submit" class="btn btn-default"> @Model.Reponses[2].Libelle </button> <button type="submit" class="btn btn-default"> @Model.Reponses[3].Libelle </button> </div> </div> </div> }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public class JeuController : Controller { private iDAL dal = new DAL(); [. . .] [HttpPost, ActionName("Question")] public ActionResult QuestionPost(JeuViewModel jeuVM) { int rep = 0; // recup id de la réponse ou du submit ??? jeuVM.Points += jeuVM.Reponses[rep].Points; jeuVM.NumQuestion += 1; jeuVM.Question = dal.getQuestionsByIdQuestionnaire(jeuVM.Questionnaire.IdQuestionnaire)[jeuVM.NumQuestion - 1]; jeuVM.Reponses = dal.getReponsesByIdQuestion(jeuVM.Question.IdQuestion); if (jeuVM.NumQuestion > 10) return View("Resultat", jeuVM); ; return View(jeuVM); } }
Partager