Maison >développement back-end >C++ >Comment regrouper correctement les boutons radio par question dans ASP.NET MVC 5 ?
Problème :
Lors du regroupement des boutons radio par question dans un ASP Vue .NET MVC 5, tous les boutons radio sont placés dans un seul groupe, ce qui rend impossible la sélection de réponses à plusieurs questions indépendamment.
Solution :
Pour regrouper correctement les boutons radio, vous devez vous assurer que chaque question a un attribut de nom unique. Ceci peut être réalisé en utilisant des index de boucle et des modèles de vue pour lier les boutons radio à un modèle typé.
Modèle de vue :
Tout d'abord, créez des modèles de vue qui seront utilisé pour représenter les données et générer le formulaire.
public class QuestionVM { public int ID { get; set; } public string Text { get; set; } public int? SelectedAnswer { get; set; } } public class SubjectVM { public int? ID { get; set; } public string Name { get; set; } public List<QuestionVM> Questions { get; set; } } public class StudentVM { public int ID { get; set; } public string Name { get; set; } public List<SubjectVM> Subjects { get; set; } }
Vue :
Dans la vue, utilisez la méthode @Html.BeginForm pour créer un élément de formulaire, puis générez les boutons radio à l'aide de la méthode @Html.RadioButtonFor.
@model YourAssembly.StudentVM @using(Html.BeginForm()) { // Hidden field for unique student identifier @Html.HiddenFor(m => m.ID) // Student name (with no binding) @Html.DisplayFor(m => m.Name) // Iterate over subjects and questions for(int i = 0; i < Model.Subjects.Count; i++) { // Hidden field for subject identifier (if any) @Html.HiddenFor(m => m.Subjects[i].ID) // Display subject name @Html.DisplayFor(m => m.Subjects[i].Name) for (int j = 0; j < Model.Subjects[i].Questions.Count; j++) { // Hidden field for question identifier @Html.HiddenFor(m => m.Subjects[i].Questions[j].ID) // Display question text (with no binding) @Html.DisplayFor(m => m.Subjects[i].Questions[j].Text) foreach(var answer in Model.Subjects[i].Questions[j].PossibleAnswers ) { // Bind radio button to property on QuestionVM @Html.RadioButtonFor(m => m.Subjects[i].Questions[j].SelectedAnswer, answer.ID, new { id = answer.ID}) <label for="@answer.ID">@answer.Text</label> } } } // Submit button <input type="submit" value="save" /> }
Controller:
Dans l'action du contrôleur qui gère la soumission du formulaire, vous pouvez accéder aux données soumises via StudentVM model.
[HttpPost] public ActionResult Edit(StudentVM model) { // Save and redirect (not shown) }
En utilisant des modèles de vue et la méthode @Html.RadioButtonFor, vous pouvez vous assurer que chaque question a un attribut de nom unique, qui permettra de regrouper correctement les boutons radio.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!