首页 > 后端开发 > C++ > 如何在 ASP.NET MVC 5 中按问题正确对单选按钮进行分组?

如何在 ASP.NET MVC 5 中按问题正确对单选按钮进行分组?

Mary-Kate Olsen
发布: 2024-12-29 00:25:08
原创
292 人浏览过

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

ASP.NET MVC 5 中的分组单选按钮

问题:

在 ASP 中按问题对单选按钮进行分组时.NET MVC 5视图,所有单选按钮都放置在一个组中,使得无法为多个问题选择答案

解决方案:

要正确对单选按钮进行分组,您需要确保每个问题都有唯一的名称属性。这可以通过使用循环索引和视图模型将单选按钮绑定到类型化模型来实现。

视图模型:

首先,创建视图模型,它将用于表示数据并生成form.

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; }
}
登录后复制

View:

在视图中,使用 @Html.BeginForm 方法创建表单元素,然后使用 @ 生成单选按钮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" />
}
登录后复制

Controller:

在处理表单提交的控制器操作中,您可以通过 StudentVM 模型访问提交的数据。

[HttpPost]
public ActionResult Edit(StudentVM model)
{
  // Save and redirect (not shown)
}
登录后复制

通过使用视图模型和 @Html.RadioButtonFor 方法,可以确保每个问题都有唯一的 name 属性,该属性将允许单选按钮正确分组。

以上是如何在 ASP.NET MVC 5 中按问题正确对单选按钮进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板