Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengumpulkan Butang Radio dengan Betul mengikut Soalan dalam ASP.NET MVC 5?

Bagaimana untuk Mengumpulkan Butang Radio dengan Betul mengikut Soalan dalam ASP.NET MVC 5?

DDD
DDDasal
2025-01-02 13:22:09627semak imbas

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

Mengumpulkan Butang Radio dalam ASP.NET MVC 5

Soalan:

Dalam aplikasi ASP.NET MVC 5, borang mempunyai beberapa set butang radio. Setiap kumpulan mewakili soalan, tetapi coretan kod hanya menjana satu kumpulan, menyebabkan hanya soalan pertama yang memilih butang radio sambil menyahpilih yang lain. Bagaimanakah perkara ini boleh diselesaikan untuk mengumpulkan butang radio dengan betul mengikut soalan?

Jawapan:

Untuk mengumpulkan butang radio mengikut soalan, beberapa isu dalam kod yang disediakan perlu ditangani :

  • ID pendua: Pastikan id unik untuk butang radio untuk menghalang HTML tidak sah.
  • Atribut nama pendua: Elakkan atribut nama pendua untuk membuat berbilang kumpulan. Sebaliknya, kumpulkan butang radio dengan memberikannya atribut nama yang sama.
  • Mengikat pada sifat yang salah: Ikat butang radio pada sifat soalan yang berkaitan dengannya.

Kod Diubah Suai:

@foreach (var question in Model.GeneralQuestions)
{
    <div class="well">
        <h3><strong>@question.QuestionString</strong></h3>
        @foreach (var answer in question.PossibleAnswers)
        {
            @Html.RadioButtonFor(
                model => model.GeneralQuestions.IndexOf(question), // Binding to index of question in list
                answer.Answer,
                new { id = $"question_{question.QuestionID}_answer_{answer.Answer}" })
            @Html.Label(answer.Answer)
            <br />
        }
    </div>
}

Lihat Model:

Buat model paparan dengan sifat untuk diikat pada butang radio dan memaparkan soalan.

public class QuestionVM
{
    public string QuestionString { get; set; }
    public IEnumerable<AnswerVM> PossibleAnswers { get; set; }
}

public class StudentVM
{
    public int ID { get; set; }
    public string Name { get; set; }
    public List<SubjectVM> Subjects { get; set; }
}

public class SubjectVM
{
    public string Name { get; set; }
    public List<QuestionVM> Questions { get; set; }
}

Paparan:

@model StudentVM
@using (Html.BeginForm())
{
    @Html.HiddenFor(m => m.ID)
    @Html.DisplayFor(m => m.Name)
    for (int i = 0; i < Model.Subjects.Count; i++)
    {
        @Html.HiddenFor(m => m.Subjects[i].ID)
        @Html.DisplayFor(m => m.Subjects[i].Name)
        for (int j = 0; j < Model.Subjects[i].Questions.Count; j++)
        {
            @Html.HiddenFor(m => m.Subjects[i].Questions[j].ID)
            @Html.DisplayFor(m => m.Subjects[i].Questions[j].QuestionString)
            foreach (var answer in Model.Subjects[i].Questions[j].PossibleAnswers)
            {
                <div>
                    @Html.RadioButtonFor(
                        m => m.Subjects[i].Questions[j].SelectedAnswer,
                        answer.ID,
                        new { id = $"question_{SubjectQuestions[i].Questions[j].ID}_answer_{answer.ID}" })
                    <label for="@answer.ID">@answer.Text</label>
                </div>
            }
        }
    }
    <input type="submit" value="save" />
}

Pengawal:

public ActionResult Edit(int ID)
{
    StudentVM model = new StudentVM();
    // Populate model with data from database
    return View(model);
}

[HttpPost]
public ActionResult Edit(StudentVM model)
{
    // Save and redirect
    return RedirectToAction("Index");
}

Ini diubah suai kod:

  • Mengikat butang radio pada sifat yang betul (indeks soalan dalam senarai).
  • Mencipta id unik untuk butang radio dan menggunakan konvensyen penamaan yang konsisten.
  • Menggunakan model paparan untuk organisasi dan perwakilan data yang lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk Mengumpulkan Butang Radio dengan Betul mengikut Soalan dalam ASP.NET MVC 5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn