1

私は、ユーザーが一連の質問に答えて、あらかじめ決められた 4 つのオプションから回答を選択できるアプリケーションを構築しています。私が直面している問題は、データをコントローラーに送り返す方法です。各質問が、および、すべてのタイプを保持している間Game、プロパティを保持するオブジェクトがあります。QuestionsCodeQuestionAnswerstring

すべての質問と回答をドロップダウンリストに表示するページを作成しました (ラジオボタンとして配置する方法がわかったら、それを使用します)。コントローラー:select生成されたHTMLコードのすべての要素は同じですid。では、質問と回答の関係を他のものと区別するにはどうすればよいでしょうか?

より良い代替アプローチはありますか?質問ごとに作業を試みましたPartialViewが、可能であれば、質問のリストを含む 1 つのページに固執したいと思います。

現在のビューを作成するために使用しているコードは次のとおりです。

@using (Html.BeginForm("Save", "Game", FormMethod.Post)) {
        foreach (var question in Model.Questions) {
            <div class="question">
                <h4>@vraag.Vraag</h4>
                @Html.DropDownListFor(x => question.Code, new SelectList(question .Answers))
                @Html.HiddenFor(x => question.Code)            
            </div>
        }
        <input type="submit" value="Save" />
    }

どの回答がどの質問のコードを対象としているかを明確に伝える方法で、すべての回答をコントローラーに送り返したいと考えています。

4

1 に答える 1

1

リストの名前フィールドにはインデックスが作成されないため、リストをバインドするためにa を使用することはできませんforeach(そのため、モデル バインダーはそれらをどう処理するかわかりません)。forループを使用する必要があります。これを試して:

for (int i = 0; i < Model.Questions.Count; i++) {
        <div class="question">
            <h4>@vraag.Vraag</h4>
            @Html.DropDownListFor(x => x.Questions[i].Code, new SelectList(Model.Questions[i].Answers))
            @Html.HiddenFor(x => x.Questions[i].Code)            
        </div>
    }
于 2013-04-25T10:45:06.153 に答える