問題:
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 サイトの他の関連記事を参照してください。