0

デフォルトのバインダーを使用してネストされたリストにバインドするのに問題があります。linq to sqlを使用しており、次のデータ構造を持っています

コンペティション<コンペティションクエスチョン<コンペティションクエスチョンチョイス

私の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)
{

}

それは私に競争を与えますが、子の要素はありません

私は、リストのコンペティションプレフィックスをHTMLに含めずに、各コレクションに個別にバインドすることなく、より成功しました。

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

しかし、これをcompetitionQuestionChoicesで機能させることはできません。これは、2つのプレフィックスが必要であり、宣言する方法がわからないためです。

どんな助けでもありがたいです。

4

1 に答える 1

0

私の問題は、.Net 3.5のassignメソッドの問題に起因していることがわかりました。.Net4をターゲットにした後、バインドは正しく機能しました。これがさらに説明のある投稿です。

于 2009-11-01T13:34:11.270 に答える