2011-10-07 20 views
9

Tengo un modelo que contiene una colección de elementos que se pueden modificar.Vista parcial de MVC3 y el modelo no publica cambios atrás

Represento la colección utilizando una Vista parcial, que a su vez usa EditorForModel para generar el HTML para cada elemento de la colección.

@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" /> 
    } 

Vista parcial

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

PlayerModel Ver

@model Footy.Models.PlayerModel 

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

Todo hace correctamente, pero cuando el usuario hace clic en la entrada, el método controlador no se pasa la colección niño en el modelo , p.ej Model.Team1Players is null

¿Qué me falta?

EDIT: HTML generado es

<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> 

Gracias

Creo que tiene que ver con esta cuestión, que todavía no tiene una respuesta: Posting data back to a controller from a Partial View rendered by Ajax

+0

difícil de decir. ¿Puede ir a ver esta página en su navegador y enviar el código HTML generado (mostrar el código fuente o algo similar en su navegador)? – Carsten

Respuesta

4

Si inspecciona la fuente interpretada ¿Puede verificar que los nombres y las identificaciones de las entradas del modelo hijo representado corresponden a la jerarquía del modelo?

Creo que necesitará EditorFor para que los modelos secundarios estén correctamente "espaciados".

Así que en la vista EventModel, usar algo como esto:

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

sin embargo no estoy seguro. He tenido problemas similares con el framework MVC.

+1

Sí, eso fue todo. Además, tuve que agregar un nuevo campo oculto en la vista parcial para la identificación de usuario, así que sabía qué jugador tenía que actualizar con el nuevo estado. Genial, gracias. – Duncan

0

Quizás el problema esté en el enlace de la colección.

Intente leer this post. Debería darle una idea sobre el enlace de colección

Cuestiones relacionadas