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
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.
}
Vue : Question.cshtml
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>
}
Controller : Jeu
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);
        }
}