1

我正在构建一个应用程序,它允许用户解决一系列问题并从 4 个预先确定的选项中选择他们的回答。我面临的问题是如何将数据发送回控制器。我有一个对象Game,它包含一个属性Questions,而每个问题都包含一个Code,QuestionAnswer, 所有string类型。

我创建了一个页面,在下拉列表中显示每个问题和答案(一旦我弄清楚如何将其放置为单选按钮,我将使用它),但我不知道应该如何将结果发送回控制器:select生成的代码中的每个元素HTML都具有相同的id,那么如何区分问答关系?

有没有更好的替代方法?我试过PartialView为每个问题处理一个问题,但如果可能的话,我想坚持一页的问题列表。

我用来创建当前视图的代码是这样的:

@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

您不能使用 aforeach来绑定列表,因为它们的名称字段不会被索引(因此模型绑定器不知道如何处理它们)。您需要使用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 回答