2011-10-07 15 views
9

私は、変更可能なアイテムのコレクションを含むモデルを持っています。MVC3部分的なビューとモデルが変更をポストバックしない

パーシャルビューを使用してコレクションをレンダリングします。パーシャルビューは、EditorForModelを使用して、コレクション内の各要素のHTMLを出力します。

@model Footy.Models.EventModel 

    <h2>@Model.Team1Name vs @Model.Team2Name</h2> 
    @using (Html.BeginForm("Index", "Event")) 
    { 
     @Html.HiddenFor(m => m.EventID) 
     <h1> 
      Team 1 Squad</h1> 
     @Html.Partial("EventPlayers", Model.Team1Players); 
     <h1> 
      Team 2 Squad</h1> 
    Html.RenderPartial("EventPlayers", Model.Team2Players); 

     <input type="submit" value="Confirm Changes" /> 
    } 

部分図

@model IEnumerable<Footy.Models.PlayerModel> 
@Html.EditorForModel() 

PlayerModelビュー

@model Footy.Models.PlayerModel 

@Model.PlayerName @Html.DropDownListFor(p => p.ParticipationStatusID, new SelectList(Model.ParticipationTypes, "Key", "Value")) 

それはすべてが正しくレンダリングが、ユーザが入力をクリックしたときに、コントローラのメソッドをモデルに子コレクションが渡されていません、例えばModel.Team1Players is null

私は何が欠けていますか?

EDIT:生成されたHTMLはまだ答えていない

<form action="/Footy/Event/Index/1" method="post"><input data-val="true" data-val-number="The field EventID must be a number." data-val-required="The EventID field is required." id="EventID" name="EventID" type="hidden" value="1" />    
<h1>Team 1 Squad</h1> 
     si <select data-val="true" data-val-number="The field ParticipationStatusID must be a number." data-val-required="The ParticipationStatusID field is required." name="[0].ParticipationStatusID"><option value="1">Team</option> 
    <option value="2">Sub</option> 
    <option value="3">Squad</option> 
    </select> 
    <h1>Team 2 Squad</h1> 
<input type="submit" value="Confirm Changes" /> 
</form> 

おかげ

私はそれがこの質問に関連していると考え、次のとおりです。あなたがレンダリングされたソースを検査した場合Posting data back to a controller from a Partial View rendered by Ajax

+0

あなたのブラウザでこのページを表示し、生成されたHTMLを表示することができますか? – Carsten

答えて

4

をレンダリングされた子モデル入力の名前とIDがモデル階層に対応していることを確認できますか?

子モデルが適切に「名前空間」になるためには、EditorForが必要と思われます。

@Html.EditorFor(m => m.Team1Players, "EventPlayers") 

私はしかし、わからない:

だからEventModelビューで、このようなものを使用します。私はMVCフレームワークで同様の問題を抱えています。

+1

はい、それでした。さらに、ユーザーIDのパーシャルビューに新しい隠しフィールドを追加する必要があったので、どのプレイヤーを新しいステータスで更新する必要があるのか​​分かりました。素晴らしいもの - ありがとう! – Duncan

0

多分、問題はコレクションバインディングにあります。

this postをお試しください。コレクションバインディングに関するいくつかの洞察を与える必要があります

関連する問題