繁体   English   中英

如何将多个自动生成的字段中的数据从视图发送回控制器

[英]How to send back data from multiple auto-generated fields from view to controller

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

我创建了一个页面,该页面在下拉列表中显示每个问题和答案(一旦我弄清楚了如何将其放置为单选按钮,我将使用它),但是我对如何将结果发送回去感到困惑控制器:生成的HTML代码中的每个select元素都具有相同的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" />
    }

我想将所有答案发送回控制器,以便清楚地告诉我哪个答案代表哪个问题的代码。

您不能使用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>
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM