Maison > développement back-end > C++ > Comment regrouper correctement les boutons radio par question dans ASP.NET MVC 5 ?

Comment regrouper correctement les boutons radio par question dans ASP.NET MVC 5 ?

Mary-Kate Olsen
Libérer: 2024-12-29 00:25:08
original
291 Les gens l'ont consulté

How to Properly Group Radio Buttons by Question in ASP.NET MVC 5?

Grouper les boutons radio 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; }
}
Copier après la connexion

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" />
}
Copier après la connexion

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)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal