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
Lepaskan: 2025-01-02 13:22:09
asal
634 orang telah melayarinya

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>
}
Salin selepas log masuk

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; }
}
Salin selepas log masuk

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" />
}
Salin selepas log masuk

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");
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan