2012-09-05 11 views
7

Cuál es la mejor manera de enlazar una colección creada dinámicamente de elementos en una vista MVC a una colección en la MVC 4. Conozco las versiones anteriores han requerido que los elementos se ven así:no secuencial colección de unión

<input name="Categories[0].CategoryID" type="hidden" value="123" /> 
<input name="Categories[0].CategoryName" type="hidden" value="Music" /> 
<input name="Categories[1].CategoryID" type="hidden" value="456" /> 
<input name="Categories[1].CategoryName" type="hidden" value="Movies" /> 

Pero cuando agrega dinámicamente elementos nuevos y los elimina, las cosas se salen de la secuencia con bastante rapidez.

¿MVC 4 agrega una forma de enlazar a una colección no secuencial?

Respuesta

11

índices de recogida secuenciales no apoyado desde MVC2 que sólo tiene que tener un campo separado oculto que mantendrá el índice con el esquema name: CollectionName.Index:

Ej:

<input type="hidden" name="Categories.Index" value="3" /> 
<input name="Categories[3].CategoryID" type="hidden" value="123" /> 
<input name="Categories[3].CategoryName" type="hidden" value="Music" /> 

<input type="hidden" name="Categories.Index" value="1" /> 
<input name="Categories[1].CategoryID" type="hidden" value="456" /> 
<input name="Categories[1].CategoryName" type="hidden" value="Movies" /> 

Puede encontrar más información sobre el tema aquí: Model Binding To A List

+0

Esto no parece funcionar bien cuando se usan los Html Helpers, porque no se puede controlar el nombre de los elementos de entrada usando htmlAttributes. – Dismissile

+0

No, no hay soporte directo para esto con 'HtmlHelpers', pero hay algunos ayudantes de terceros como [ayudantes BeginCollectionItem] (https://github.com/danludwig/BeginCollectionItem) que pueden generar el campo oculto de índice y la entrada adecuada nombres para ti – nemesv

+0

Bummer. Esperaba que MVC4 lo hiciera un poco más fácil. – Dismissile

Cuestiones relacionadas