>백엔드 개발 >C++ >ASP.NET MVC 5에서 질문별로 라디오 버튼을 올바르게 그룹화하는 방법은 무엇입니까?

ASP.NET MVC 5에서 질문별로 라디오 버튼을 올바르게 그룹화하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-02 13:22:09612검색

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

ASP.NET MVC 5에서 라디오 버튼 그룹화

질문:

ASP.NET MVC 5 애플리케이션에서, 양식에는 여러 개의 라디오 버튼 세트가 있습니다. 각 그룹은 질문을 나타내지만 코드 조각은 하나의 그룹만 생성하므로 첫 번째 질문에서만 라디오 버튼이 선택되고 다른 질문은 선택 취소됩니다. 질문별로 라디오 버튼을 올바르게 그룹화하려면 어떻게 해야 합니까?

답변:

라디오 버튼을 질문별로 그룹화하려면 제공된 코드의 몇 가지 문제를 해결해야 합니다. :

  • 중복 ID: 이를 방지하려면 라디오 버튼에 고유한 ID를 보장하세요. HTML이 잘못되었습니다.
  • 중복 이름 속성: 여러 그룹을 만들려면 이름 속성이 중복되지 않도록 하세요. 대신 동일한 이름 속성을 할당하여 라디오 버튼을 그룹화하세요.
  • 잘못된 속성에 바인딩: 라디오 버튼을 연결된 질문 속성에 올바르게 바인딩하세요.

수정됨 코드:

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

뷰 모델:

라디오 버튼 및 디스플레이에 바인딩할 속성이 있는 뷰 모델 생성 질문.

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

보기:

@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" />
}

컨트롤러:

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

수정된 코드:

  • 라디오 버튼을 올바른 속성에 바인딩합니다( 목록에 있는 질문의 인덱스).
  • 라디오 버튼에 대한 고유 ID를 생성하고 일관된 명명 규칙을 사용합니다.
  • 더 나은 구성 및 데이터 표현을 위해 뷰 모델을 사용합니다.

위 내용은 ASP.NET MVC 5에서 질문별로 라디오 버튼을 올바르게 그룹화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.