問題:
ASP.NET MVC 5 プロジェクトでは、ループを使用してラジオ ボタンの複数のグループを作成しようとすると、形成されるグループは 1 つだけになり、以前に選択されていたラジオ ボタンの選択が解除されます。オプション。
コード:
foreach(var question in Model.GeneralQuestions) { <div class = "well"> <h3> <strong>@question.QuestionString</strong> </h3> @foreach (var answer in question.PossibleAnswers) { @Html.RadioButtonFor(model => question.QuestionString, answer.Answer) @Html.Label(answer.Answer) <br /> } </div> }
解決策:
1.ビュー モデルの使用:
表示および編集するデータを表すビュー モデルを定義します。この場合、データ モデルの構造を表すために、質問 と 主題 のビュー モデルを作成する必要があります。
2.ループでラジオ ボタンを生成:
ラジオ ボタンを生成するループを作成します。各ボタンには、質問と件名のコンテキストに基づいて一意の name 属性が必要です。例:
foreach (var subject in Model.Subjects) { @Html.HiddenFor(m => subject.ID) foreach (var question in subject.Questions) { @Html.HiddenFor(m => question.ID) <div> @Html.RadioButtonFor(m => subject.Questions[j].SelectedAnswer, answer.ID, new { id = answer.ID }) <label for="@answer.ID"> @answer.Text </label> </div> } }
3.モデル プロパティにバインド:
ラジオ ボタン name 属性がモデル内のプロパティに正しくバインドされていることを確認します。ラジオ ボタンの各グループには、選択した回答を保持するための個別のプロパティが必要です。
4.コントローラ アクションの調整:
コントローラの 編集 アクションを変更して、ビュー モデルにデータベースの値を設定し、選択した回答を保存することでフォームの送信を処理します。
ビューによって生成された HTML を必ずチェックして、ラジオ ボタンの name 属性がバインドできるように正しく構造化されていることを確認してください。フォーム送信時のモデル。
以上がループを使用して ASP.NET MVC 5 でラジオ ボタンを適切にグループ化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。