2012-09-05 13 views
7

Qual è il modo migliore per legare una collezione creata in modo dinamico di elementi in una vista MVC per una collezione in MVC 4. So che le versioni precedenti hanno richiesto che gli elementi di simile a questa:non sequenziale di raccolta vincolante

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

Ma quando aggiungi in modo dinamico nuovi elementi e li rimuovi, le cose vengono fuori dalla sequenza abbastanza rapidamente.

MVC 4 aggiungere un modo per associare a una raccolta non sequenziale?

risposta

11

indici di raccolta sequenziali non supportati dal MVC2 si solo bisogno di avere un campo separato nascosto che conterrà l'indice con il name schema: CollectionName.Index:

Esempio:

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

È possibile trovare maggiori informazioni sull'argomento qui: Model Binding To A List

+0

Questo non sembra funzionare bene quando si utilizzano gli helper Html, però, perché non è possibile controllare il nome degli elementi di input usando htmlAttributes. – Dismissile

+0

No, non esiste un supporto diretto per questo con 'HtmlHelpers' ma ci sono alcuni helper di terze parti come [BeginCollectionItem helper] (https://github.com/danludwig/BeginCollectionItem) che possono generare il campo nascosto indice e l'input corretto nomi per te. – nemesv

+0

Bummer. Speravo che MVC4 avrebbe reso questo un po 'più facile. – Dismissile

Problemi correlati