Heim >Backend-Entwicklung >C++ >Wie werden Optionsfelder in ASP.NET MVC 5 ordnungsgemäß nach Fragen gruppiert?

Wie werden Optionsfelder in ASP.NET MVC 5 ordnungsgemäß nach Fragen gruppiert?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-29 00:25:08274Durchsuche

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

Optionsfelder in ASP.NET MVC 5 gruppieren

Problem:

Beim Gruppieren von Optionsfeldern nach Frage in einem ASP In der .NET MVC 5-Ansicht sind alle Optionsfelder in einer einzigen Gruppe platziert, sodass es unmöglich ist, Antworten für mehrere Fragen auszuwählen unabhängig.

Lösung:

Um Optionsfelder richtig zu gruppieren, müssen Sie sicherstellen, dass jede Frage ein eindeutiges Namensattribut hat. Dies kann durch die Verwendung von Schleifenindizes und Ansichtsmodellen erreicht werden, um die Optionsfelder an ein typisiertes Modell zu binden.

Modell anzeigen:

Erstellen Sie zunächst Ansichtsmodelle, die verwendet werden sollen Wird verwendet, um die Daten darzustellen und zu generieren Formular.

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; }
}

Ansicht:

Verwenden Sie in der Ansicht die @Html.BeginForm-Methode, um ein Formularelement zu erstellen, und generieren Sie dann die Optionsfelder mit dem @ Html.RadioButtonFor Methode.

@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:

In der Controller-Aktion, die die Formularübermittlung verarbeitet, können Sie über das StudentVM-Modell auf die übermittelten Daten zugreifen.

[HttpPost]
public ActionResult Edit(StudentVM model)
{
  // Save and redirect (not shown)
}

Durch die Verwendung von Ansichtsmodellen und der @Html.RadioButtonFor-Methode können Sie sicherstellen, dass jede Frage über ein eindeutiges Namensattribut verfügt, das die Gruppierung von Optionsfeldern ermöglicht richtig.

Das obige ist der detaillierte Inhalt vonWie werden Optionsfelder in ASP.NET MVC 5 ordnungsgemäß nach Fragen gruppiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn