2009-10-30 44 views
0

我遇到了一些麻烦绑定到使用默认绑定器的嵌套列表。我使用LINQ to SQL和具有以下数据结构MVC默认模型绑定到复杂列表

竞争< CompetitionQuestions < 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) 
{ 

} 

这让我成为一个竞争对手,但没有孩子的元素

我一直在List中没有竞争前缀的情况下取得了更多的成功,并在每个集合中单独绑定了HTML。

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

,但我不能让这对competitionQuestionChoices工作,因为它必须有两个前缀,我不知道如何申报

任何帮助感激地接受。

回答

0

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