MVC默认模型绑定到复杂列表

时间:2009-10-30 15:53:20

标签: c# asp.net-mvc modelbinder

我在使用默认绑定器绑定到嵌套列表时遇到了一些问题。我正在使用linq到sql并具有以下数据结构

比赛<竞争问题< CompetitionQuestionChoices

我的html如下

<%= Html.Hidden("Competition.Id",Model.Competition.Id) %>
 <%=Html.TextBox("Competition.CompetitionName", Model.Competition.CompetitionName )%>

<%= Html.TextBox("Competion.CompetitionQuestions[0].Id", Model.CompetitionQuestion.Id)%>
<%= Html.TextBox("Competion.CompetitionQuestions[0].Question", Model.CompetitionQuestion.Question )%>

<%= Html.TextBox("Competion.CompetitionQuestions[0].CompetitionQuestionChoices[0].Id", Model.CompetitionQuestionChoices.Id)%>

<%= Html.TextBox("Competion.CompetitionQuestions[0].CompetitionQuestionChoices[0].Choice", Model.CompetitionQuestionChoices.Choice)%>

在我的控制器中我试过

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Save([Bind(Prefix="Competition")]Competition competition)
{

}

让我参加比赛,但没有儿童元素

我已经更成功了,没有列表中的竞争前缀,而是单独绑定到每个集合,例如

UpdateModel(competition,"Competition");
UpdateModel(competition.CompetitionQuestions,"competitionQuestions");

但是我不能让它竞争竞争问题选择,因为它必须有两个前缀,我不知道如何声明

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

事实证明我的问题源于.Net 3.5中的assign方法的问题。在针对.Net 4后,绑定正常工作。这是一个post,有进一步的解释。