ホームページ > バックエンド開発 > 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 ビューでは、すべてのラジオ ボタンが 1 つのグループに配置されるため、複数の質問に対する回答を選択できません

解決策:

ラジオ ボタンを適切にグループ化するには、各質問に一意の name 属性があることを確認する必要があります。これは、ループ インデックスとビュー モデルを使用してラジオ ボタンを型付きモデルにバインドすることで実現できます。

View Model:

まず、次のようなビュー モデルを作成します。データを表現し、生成するために使用されます。 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 method.

@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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート