2009-10-30 64 views
0

Je rencontre des problèmes de liaison à une liste imbriquée avec le classeur par défaut. J'utilise LINQ to SQL et ont la structure de données suivantesLiaison de modèle par défaut MVC à la liste complexe

Concours < CompetitionQuestions < CompetitionQuestionChoices

mon html est la suivante

<%= 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)%> 

Dans mon contrôleur, j'ai essayé

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

} 

ce qui m'obtient une concurrence mais aucun élément d'enfant

J'ai été plus réussie sans le préfixe de concurrence sur les listes dans le HTML et la liaison à chaque collection individuellement.

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

mais je ne peux pas obtenir que cela fonctionne pour competitionQuestionChoices comme il doit avoir deux préfixes et je ne sais pas comment déclarer

Toute aide est reçue avec reconnaissance.

Répondre

0

Il s'est avéré que mes problèmes provenaient d'un problème avec la méthode assign dans .Net 3.5 Après avoir ciblé .Net 4, la liaison fonctionnait correctement. Voici un post avec plus d'explications.