Je suis nouveau à NET MVC et j'essaie de développer une application où l'utilisateur répondra à quelques questions,ASP.NET MVC Une seule des entrées RadioButton est transmis au contrôleur
J'ai les modèles suivants liés à ma question:
- question
- Choice (comprend ID question FK)
et ViewModel
public class QuestionChoiceViewModel
{
public Question Question { get; set; }
public IEnumerable<Choice> Choices { get; set; }
}
Dans mon vue Je veux afficher toutes les questions avec leurs choix répondant que les boutons radio, donc j'ai les lignes suivantes dans mon point de vue Choix/Index.
@model IEnumerable<WebApplication.Models.QuestionChoiceViewModel>
@using (Html.BeginForm("Index", "Choices", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@foreach (var q in Model){
@:<b>Question:</b>
@Html.DisplayFor(modelItem => q.Question.questionText)
<form class="form-group">
@foreach(var c in q.Choices){
<input type="radio" name="@c.choiceText" value="@c.choiceID" />
@c.choiceText
<br />
}
</form>
<br />
}
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="button" value="Back" class="btn btn-default" id="btnBack" />
<input type="submit" name="btnSubmit" value="Submit" class="btn btn-default" />
</div>
</div>
</div>
}
Je montre et peux choisir parmi plusieurs questions sans problème.
Et pour l'échantillon final de code, voir mon contrôleur ne prend que FormCollection type que paramater
public ActionResult Index(FormCollection form)
Le problème: Quand je vois le débogage et ce qui est sous la forme -besides Token etc.- est la valeur du seul groupe de radiobutton. Disons que j'ai 10 questions mais ce que je suis passé dans le contrôleur est tout ce qui est sélectionné dans la 1ère question. Qu'ai-je fait de mal?
En outre, tous les conseils sur mon style sont les bienvenus, merci!
Vous ne pouvez pas utiliser une boucle 'foreach' pour votre modèle. Référez-vous à [cette réponse] (https://stackoverflow.com/questions/30094047/post-an-html-table-to-ado-net-datatable/30094943#30094943) –
Stephen a raison, la valeur 'nom' de votre les radios doivent correspondre au nom de la propriété à l'intérieur du modèle. En ce moment, vous avez le texte de choix remplissant l'attribut 'nom'. –
@StephenMuecke Merci pour votre temps, votre réponse m'a été utile.Mais quand j'ai changé mes propriétés de nom à l'identification de question, je pourrais créer des noms pour des boutons radio exactement comme je voulais. Parce que je voulais les regrouper avec l'identifiant de la question de toute façon. Cela fonctionne pour l'instant, j'espère que je ne manque pas autre chose. – Alp